Тернарный оператор: Почему выводит ошибку lvalue required? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Данный код не компилируется в c99 :
/* -------------------------------------------------------------------------- */
#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?

Решение задачи: «Тернарный оператор: Почему выводит ошибку lvalue required?»

textual
Листинг программы
state_flag = ( letter1 == ASCII_SWITCH_SIGN ) ? STATE_PRINTING : STATE_CHANGING_LETTERS;

Объяснение кода листинга программы

  1. state_flag - это переменная, которая получает значение в результате работы тернарного оператора.
  2. letter1 - это переменная, которая сравнивается со значением ASCII_SWITCH_SIGN.
  3. ASCII_SWITCH_SIGN - это константа, которая представляет собой ASCII-код символа переключения регистра.
  4. Результат сравнения сохраняется в переменной state_flag.
  5. Если letter1 равно ASCII_SWITCH_SIGN, то state_flag становится STATE_PRINTING.
  6. В противном случае, state_flag становится STATE_CHANGING_LETTERS.
  7. Ошибка lvalue required возникает, когда переменная не определена или не используется в программе.
  8. В данном коде ошибка может возникнуть, если переменная letter1 не была определена или использована до этого места в коде.
  9. Чтобы исправить ошибку, необходимо убедиться, что переменная letter1 была определена и инициализирована до использования в тернарном операторе.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы