【发布时间】:2014-06-30 13:57:58
【问题描述】:
我正在用我的一个枚举编写一个非常简单的三元运算符,我偶然发现了一个非常奇怪的错误(对我来说......)。鉴于这段代码:
typedef enum
{
first = 0,
second,
last
}myEnum;
myEnum myVar = first;
(myVar < second) ? myVar++ : myVar = last;
编译器向我发送了以下错误:
错误:需要左值作为赋值的左操作数
好像我只是将三元组更改为这样的 if/else 块:
if(myVar < second)
{
myVar++;
}
else
{
myVar = last;
}
一切都可以编译并且工作正常。有人可以解释为什么写成三元组的完全相同的代码无法编译吗?我错过了什么?
【问题讨论】:
-
@dyp "三元运算符的第三部分不能是赋值表达式" 为什么不呢?如果你适当地加上括号,它应该可以工作(但可能会让读者感到困惑)。