int a=1,b=2,c=3; printf("%d%d%d%d\n",a=b=c,a=b==c,a==(b=c),a==(b==c))中的答案是怎么来的?谢谢

我用c++算出来是 3 1 0 0,不知道1是怎么来的

答案应该是3 1 0 0
从右向左计算并压栈:a==(b==c),由于b!=c,所以b==c=0;而a!=0,所以a==(b==c)=0。
a==(b=c)使b=3,而a!=3,所以a==(b=c)=0。
a=b==c,由于b==c成立(上面已经使b=c=3了),所以b==c=1;所以a=b==c是把1赋给a,使a=1。
a=b=c,因为c目前的值是3,所以有b=3,a=3。
最后再从左至右打印出来就是3100。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-03
没有人规定过C语言函数调用时哪个参数先计算,因此不同的编译器完全可以编译出不同的答案……如果想确切知道计算过程,很多编译器都提供显示反汇编代码功能,可以直接查看将C代码编译成汇编代码之后的样子,从汇编代码可以清晰看出语句的执行过程……
相似回答