标题:问个新手问题,谢谢回答
只看楼主
wangyongmin
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-7-25
 问题点数:0 回复次数:7 
问个新手问题,谢谢回答
若已定义x和y为double型变量,则表达式x=1,y=x+3/2的值是


请详细点回答!!!
搜索更多相关主题的帖子: double 表达式 
2006-09-25 19:49
小小贝
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-9-21
得分:0 
大概是1.000000吧
2006-09-25 20:41
xiaoyunhu
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-9-24
得分:0 

c语言在不同的编译器中的特性是不一样的.这个问题主要是逗号表达式的问题:逗号表达式的最后结果是最右边的一个表达式的值,所以该问题中最后的输出应该是表达式"y=x+3/2"的值.我用的编译器中把3和2看成是整形,所以3/2的结果是1,即总的输出是1+1=2,输出为2.000000
如果你写成y=x+3.0/2那么结果就是2.500000了,这个时候把3.0看成了double了


小晕乎
2006-09-25 21:10
wangyongmin
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-7-25
得分:0 
晕!!! 我用TC做出来是0,是不是做错了,有没有人告诉我
2006-09-25 22:55
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

3楼的解释是对的.我觉得你可能是弄错类型了.
楼主,你测试一下.
/*TC*/
#include<stdio.h>
main()
{
double x,y,z;
z=(x=1,y=x+3/2);
printf("%lf\n",x=1,y=x+3/2);//注意这里是输出x的值
printf("%lf\n",z);//这里是输出表达式的值.

}


倚天照海花无数,流水高山心自知。
2006-09-26 13:22
xiaoyunhu
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-9-24
得分:0 

good luck....


小晕乎
2006-09-26 13:25
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
得分:0 
最后的教训是,在计算时如果用了double型,就最好把数值常数也表示成double型,不然很容易出错误

此人已消失
2006-09-26 14:59
wangyongmin
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-7-25
得分:0 
太感谢了!!!
2006-09-26 19:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-92910-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.715659 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved