意外的三元分配

时间:2015-08-15 23:41:22

标签: c variables output addition ternary

int var = (1 == 1) ? (5) : (10);

这会输出5,这是正确的。

int var = 100 + (1 == 1) ? (5) : (10);

再次输出5。为什么呢?

我知道我可以通过在整个三元语句中添加大括号来解决问题,但这并不能解释添加内容会发生什么,以及为什么它在第一时间表现如此。

1 个答案:

答案 0 :(得分:4)

在C中,每个非零值都为“true”,此处100 + (1 == 1)的值为101,这也是“真”,因此选择(5)。由于?:的优先级非常低,因此括号应为((1==1) ? 5 : 10)以获得您想要的效果。