C语言问题,求解答。

已知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