求解这个程序中,x,y,z的值怎么得出来的?
求过程想很久了谢谢!{:5_91:} 逗号的优先级是最低的,所以z= x++,y++,++y;
等价于以下语句:
z = x;
x++;
y++;
++y;
所以输出结果应该是
x=2,y=3,z=1 最关键的在z这里,这里有个陷阱,首先要搞清楚优先级的关系。
虽然“,”逗号运算符是取最后的那个式子的答案,但是“=”赋值运算符的优先级大,所以直接就取了x++的值作为z的值,导致后面的y运算没有被取到。
关键的说了来说说别的吧,x++这种后置的自增运算会先输出x自身的值后才会自增,就是说先给出x=1,然后再自增到x=2。++y是先自增再输出,直接就是y=2的输出。这个等式里,x先会给z,z=1,然后x会自增,变成x=2,y自增了2次,y=3。
当然还有一种玩法,就是把z后面的所有加括号,z = (x++,y++,++y); 答案就是2,3,3。因为括号里都运算好x=2,y=3,前面说了,优先级的问题,逗号运算符因为有()的原因,所以比赋值到,那么z就会取到最后的++y的值,z=y=3。
如果不明白可以点“回复”,明白了麻烦点下“最佳答案”。对了,小提示,少用这样的式子,不仅自己看着麻烦易错,要是和别人一起开发,别人会疯
BngThea 发表于 2017-10-23 09:02
逗号的优先级是最低的,所以
z= x++,y++,++y;
等价于以下语句:
简洁明了,谢谢{:7_123:} 丶忘却的年少o 发表于 2017-10-23 09:13
最关键的在z这里,这里有个陷阱,首先要搞清楚优先级的关系。
虽然“,”逗号运算符是取最后的那个式子的 ...
谢谢,懂了!!{:7_123:}
页:
[1]