条件运算符的奇怪行为

时间:2018-03-06 23:07:43

标签: c++ conditional operator-keyword operator-precedence

我刚学习C ++中的条件运算符以及它们如何返回左值。所以我尝试使用它来确定要更改的变量。我的代码如下所示:

noexcept

当我设置int i1, i2, i3 = 0, i4 = 5; i1 < i2 ? i3 : i4 += 3; //print i3 and i4 to see what happened 时,代码会生成预期结果(i1 > i2)。但是当我设置i3 = 0, i4 = 8时,条件为真(并且i3应该增加3),没有任何反应,即i1 < i2

我尝试了另一个编译器,但结果相同。

据我了解,条件运算符的优先级高于赋值运算符,这意味着上面的表达式应该自动按如下方式分组:i3 = 0, i4 = 5。但是当我尝试使用这个代码(专门写的括号)时,一切正常,代码没有&#34;打破&#34;当条件满足时......

我完全不知道为什么会发生这种情况,这对我来说似乎很奇怪..

有人可以赐教我吗?

0 个答案:

没有答案