我刚学习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;当条件满足时......
我完全不知道为什么会发生这种情况,这对我来说似乎很奇怪..
有人可以赐教我吗?