已知int x=0,y=5,z=8;printf(“%d”,(x++,++y,z=y++));输出结果为什么是6?
逗号表达式,返回最后一个表达式的值
(x++,++y,z=y++)
x++=>x=1;
++y=>y=6;
z=y++;++在后先赋值,再加一,++在前,先加一,再赋值。等价于
z=y;
y++;
改为
z=++y; 返回就是7
x++ 不影响结果
++y ==> y=6
z= y++ ==> z = y == 6
只会输出小括号里最后一个数,也就是z=y++,因为前面执行了++y,所以y变成了6,z也变成了6