int var = (1 == 1) ? (5) : (10);
这会输出5
,这是正确的。
int var = 100 + (1 == 1) ? (5) : (10);
再次输出5
。为什么呢?
我知道我可以通过在整个三元语句中添加大括号来解决问题,但这并不能解释添加内容会发生什么,以及为什么它在第一时间表现如此。
答案 0 :(得分:4)
在C中,每个非零值都为“true”,此处100 + (1 == 1)
的值为101
,这也是“真”,因此选择(5)
。由于?:
的优先级非常低,因此括号应为((1==1) ? 5 : 10)
以获得您想要的效果。