main() {intx,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z);} 请高手详细解答为什么

如题所述

x=y=1; //x=1,y=1
z=x++,y++,++y; //逗号运算符的结合性是从左至右,因此先将x的值赋值给z,z=1,然后x自增
//x的值变为2,然后y++,++y,y自增了2次,所以y的值变为了3.
//因此,最终x=2,y=3,z=1。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-19
x=y=1;
x=1;y=1;
z=x++,y++,y++;
z=x++;y++;++y;
z=x;x++;y++;++y;
z=x++,y++,++y;是一个逗号表达式;逗号的运算优先级是最低的,所以先运算z=x++;
而逗号运算式是从左向右算的也就是说z=x++,y++,++y;这个整体表达式其实就是++y当然与本题无关
第2个回答  2020-04-25
x=y=1;
x=1,y=1
z=x++,
z=2
y++,
y=2
++y;
y=3
所以
x=2,y=3,z=1
x++的意思就是
x=x+1
先用后加
++y的意思也是y=y+1
但是先加后用,
你这里没有区别,如果有循环的话有会看出区别了
第3个回答  2020-04-20
main()
{
int
x,y,z;
x=y=1;
z=x++,//z为1,x为2
y++,//y为2
++y;
//y为3
printf("%d,%d,%d\n",x,y,x);
}
故输出的结果为2,3,2
注:1.z=x++,y++,++y;是一个逗号表达式
2.要理解前自加与后自加的区别
相似回答