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了
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);//这里是输出表达式的值.
}
good luck....