C 什么';s三元运算的返回值“quot;?:&引用;?

C 什么';s三元运算的返回值“quot;?:&引用;?,c,C,我的同学问了我一个问题: 在此之后x,y,z的值是多少: x=5; y=8; z=((x++)<(y++)?(x++):(y++)); 我能理解为什么“x=7”和“y=9”,但为什么“z=6”?这个表达式不应该返回由“x++”计算的值吗 感谢您的帮助:)对?运算符的第一个操作数的求值与第二个或第三个运算符之间存在偏差,因此第一个x++将完全生效,导致x=6。但是,第二个x++中的增量只有在对完整表达式求值后才会生效,因为该表达式中没有更多的序列点,因此x仍然为6,z=6 “三元”,而不是

我的同学问了我一个问题:

在此之后x,y,z的值是多少:

x=5;
y=8;
z=((x++)<(y++)?(x++):(y++));
我能理解为什么“x=7”和“y=9”,但为什么“z=6”?这个表达式不应该返回由“x++”计算的值吗


感谢您的帮助:)

运算符的第一个操作数的求值与第二个或第三个运算符之间存在偏差,因此第一个
x++
将完全生效,导致x=6。但是,第二个
x++
中的增量只有在对完整表达式求值后才会生效,因为该表达式中没有更多的序列点,因此x仍然为6,z=6

“三元”,而不是“三元”。“目测”指的是视觉,所以,除非你是来自Tau-Ceti的一个眼睛有虫子的怪物,否则这对你不适用:-)第二个
x++
计算的值是6;这就是为什么
z
被指定为6。
x
之后的值为7,但后增量意味着增量之前的值分配给了
z
。哦,序列点……。>@如果答案有帮助,你能接受吗@Pavan Manjunath哦,对不起,我忘了,谢谢你的提醒!:)
x=7,y=9,z=6