Я писал очень простой тернарный оператор с одним из моих перечислений и наткнулся на очень странную ошибку (для меня ...). Учитывая этот фрагмент кода:
typedef enum
{
first = 0,
second,
last
}myEnum;
myEnum myVar = first;
(myVar < second) ? myVar++ : myVar = last;
Компилятор отправил мне следующую ошибку:
ошибка: требуется lvalue как левый операнд присваивания
Где, как если бы я просто менял тернар на блок if / else, например:
if(myVar < second)
{
myVar++;
}
else
{
myVar = last;
}
Все компилируется и работает нормально. Может ли кто-нибудь объяснить, почему тот же самый код, написанный как троичный, не компилируется? Что мне не хватает?