请问个C语言的小问题~~

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:09:10
x=1,y=2,z=3;

x+=y+=z;

printf("%d\n",z+=x>y?x++:y++);

这里输出的应该是什么呢?我原以为输出的结果是x++的值:6,可运行后发现是9。能帮我解释下为什么吗?刚学C语言不是太明白。谢谢。

其实很简单,我估计你前面都没有理解错误,但是这里:
printf("%d\n",z+=x>y?x++:y++);

这句话实际返回的是z的值,而不是x,因为没有加括号.
你改成:
printf("%d\n",(z+=x)>y?x++:y++); 结果就是6了

++符号放在后面表示先执行后加1,所以z赋的值是当前的6,然后x加1变成了7。你不信试试在程序最后加一句
printf("%d\n",x),看看是不是7
如果是
printf("%d\n",z+=x>y?++x:++y);
就是另一种结果了