main() {int x=1,y=2,2;z=x+y+3; printf

main()
{int x=1,y=2,2;z=x+y+3;
printf("%d,%d,%d\n"x,y,z);
z=(x++,x+=y,x+y);
printf("%d,%d,%d\n",x,y,z);
程序的运行结果如下:
1,2,6
4,2,6
第一个运行结果我理解,第二个运行结果我没看懂;哪位老师能帮我解释一下吗?

第1个回答  2016-03-09
当语句执行到“z=(x++,x+=y,x+y);”这行的 时候,x=1,y=2,z=6;然后执行()里面的表达式,首先是x++,x=2,z=(2,x+=y,x+y);然后x+=y,x=4,z=(2,4,x+y);最后x+y,z=(2,4,6),根据逗号表达式,然后得出(2,4,6)值为6。所以最后的值为4,2,6

附:逗号表达式
逗号表达式的一般形式可以扩展为
    表达式1,表达式2,表达式3……表达式n
它的值为表达式n的值。
第2个回答  推荐于2018-03-04
x++; x变为2
x+=y; x变为4
x+y 所得的值作为逗号表达式的值,赋给z。所以,z=6
最后输出
4,2,6本回答被提问者和网友采纳
相似回答