Тернарный оператор: Почему выводит ошибку lvalue required? - C (СИ)
Формулировка задачи:
Данный код не компилируется в c99 :
почему флаг тут не считается lvalue?
/* -------------------------------------------------------------------------- */ #include <stdio.h> /* -------------------------------------------------------------------------- */ #define ASCII_SWITCH_SIGN '5' #define STATE_CHANGING_LETTERS 0 #define STATE_PRINTING 1 /* -------------------------------------------------------------------------- */ int main() { int letter1 = getchar(); if (letter1 == EOF) return 0; int state_flag; letter1 == ASCII_SWITCH_SIGN ? state_flag = STATE_PRINTING: state_flag = STATE_CHANGING_LETTERS; return 0; } /* -------------------------------------------------------------------------- */
/hw1q2.c|17|error: lvalue required as left operand of assignment|
Решение задачи: «Тернарный оператор: Почему выводит ошибку lvalue required?»
textual
Листинг программы
state_flag = ( letter1 == ASCII_SWITCH_SIGN ) ? STATE_PRINTING : STATE_CHANGING_LETTERS;
Объяснение кода листинга программы
state_flag
- это переменная, которая получает значение в результате работы тернарного оператора.letter1
- это переменная, которая сравнивается со значениемASCII_SWITCH_SIGN
.ASCII_SWITCH_SIGN
- это константа, которая представляет собой ASCII-код символа переключения регистра.- Результат сравнения сохраняется в переменной
state_flag
. - Если
letter1
равноASCII_SWITCH_SIGN
, тоstate_flag
становитсяSTATE_PRINTING
. - В противном случае,
state_flag
становитсяSTATE_CHANGING_LETTERS
. - Ошибка
lvalue required
возникает, когда переменная не определена или не используется в программе. - В данном коде ошибка может возникнуть, если переменная
letter1
не была определена или использована до этого места в коде. - Чтобы исправить ошибку, необходимо убедиться, что переменная
letter1
была определена и инициализирована до использования в тернарном операторе.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д