我正在写一个非常简单的三元运算符与我的枚举之一,我偶然发现什么是一个非常奇怪的错误(对我来说)。鉴于这段代码:与三元运算符奇怪的枚举行为
typedef enum
{
first = 0,
second,
last
}myEnum;
myEnum myVar = first;
(myVar < second) ? myVar++ : myVar = last;
编译器发出以下错误:
error: lvalue required as left operand of assignment
在哪里,如果我只是三元更改为的if/else块这样的:
if(myVar < second)
{
myVar++;
}
else
{
myVar = last;
}
一切都编译和工作正常。有人可以解释为什么完全相同的代码编写为三元不会编译?我错过了什么?
@dyp“三元运算符的第三部分不能是赋值表达式”为什么不?如果你适当地使用括号,它应该工作(但可能会使读者感到困惑)。 – glglgl