2

同学问我一个问题:

在此之后 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++" 计算的值吗?

感谢帮助 :)

4

1 回答 1

7

在运算符的第一个操作数和第二个或第三个运算符的评估之间存在一个序列点,因此第一个将完全生效,导致 x=6。但是第二个中的增量只有在评估完整表达式后才会生效,因为该表达式中没有更多的序列点,因此 x 保持 6 且 z=6。?x++x++

于 2012-04-10T07:12:00.520 回答