为什么答案最后a=8,b=8,c=10呢?

我算了好久就是不明白a的值是怎么算出来的,是取x的值还是的值?麻烦哪位大拿能不能帮我详细解答一下呢?

img

int a = (--x == y++) ? --x : y++;

这一句主体是一个三目条件运算符,它的语法如下:

condition ? return_value_a : return_value_b

condition 为真时,返回值为 return_value_a,反之,则为 return_value_b
再来细看三目运算符的每一个操作数。
首先是条件 (--x == y++),这里要注意的无非是 --x 先自减,再返回值,所以 == 的左操作数为 9;而 y++ 先返回值,后自增,所以 == 的右操作数依然是 9(但是 y 的值是 8)。条件为真,返回值为 --x,而此时 x 的值为 9,所以返回 8。
综上,a = 8。

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^