我的同学问我一个问题:
此后x,y,z的值是多少:
x=5;
y=8;
z=((x++)<(y++)?(x++):(y++));
我不确定,所以我测试了它,答案是:
x=7,y=9,z=6
我能理解为什么“x = 7”和“y = 9”,但为什么“z = 6”?这个表达式不应该返回由“x ++”计算的值吗?
感谢您的帮助:)
答案 0 :(得分:7)
在?
运算符的第一个操作数和第二个或第三个运算符的求值之间存在sequence point,因此第一个x++
将完全生效,从而导致x = 6。但是第二个x++
的增量只有在完整表达式的评估之后才会生效,因为该表达式中没有更多的序列点,因此x保持为6且z = 6。