下列程序的输出结果为( ) void main() { int x, y, z; x = y = 1; z = x++, y++, ++y; printf(“%d, %d,

问题描述:

下列程序的输出结果为( ) void main() { int x, y, z; x = y = 1; z = x++, y++, ++y; printf(“%d, %d,
下列程序的输出结果为( )
void main()
{ int x, y, z;
x = y = 1;
z = x++, y++, ++y;
printf(“%d, %d, %d\n”, x, y, z);
}
选择一个答案

a. 2, 3, 3
b. 2, 3, 2
c. 2, 3, 1
d. 2, 2, 1

c
首先赋值后,x=1,y=1
z = x++,y++,++y;
先执行z=x++=1,后面的y++,++y是逗号表达式,赋值优先级高于它
当输出后x=2,y=3;(x自加了一次,y自加了2次)z = x++, y++, ++y;我理解的是逗号表达式并列,取最后一个++y=2错了,是先进行z的赋值语句,z是取第一个逗号的啦,在进行y的自加因为逗号优先级低于“=”(赋值),所以z = x++, y++, ++y;就是一个逗号语句,z=x++是一条,y++,是一条++y是一条,按顺序执行如果z = (x++, y++, ++y);那么答案就是楼下十一级回答的那样