这是我的代码:
int main() {
static int test = 0;
const int anotherInt = 1;
test = anotherInt > test ? test++ : 0;
if (anotherInt > test)
test++;
else
test = 0;
return 0;
}
这是我构建它时产生的警告:
../main.cpp:15:40: warning: operation on ‘test’ may be undefined [-Wsequence-point]
test= anotherInt>test ? test++ : 0;
^
为什么C ++会对三元操作发出警告,而不是常规if..else
语句?
答案 0 :(得分:3)
它们并不等同。请注意,在三元运算符表达式中,您将结果分配给test
将if
条件更改为:
if(anotherInt > test)
test = test++; // undefined!
你可能也会在这里看到同样的警告。
答案 1 :(得分:-3)
你可能知道在这段代码中:anotherInt> test? test ++:0;计算机可能首先运行test ++,也许运行另一个>测试? first.so在表达式中,如果你使用变量,你不应该在这个表达式的其他地方改变它.U可以将test ++改为test + 1.