Прикрепил фото вопроса

Почему это не верно если можно написать вот так:
int main()
{
int i = 1;
int j, g;
i > 5 ? j = 4 : g = 6;
return 0;
}
Задал вопрос в одну группу и получил такой ответ: \


Вовще не понимаю что не так, если я написал код выше который делает тоже самое
Ваш код на С++ является синтаксически верным и может быть скомпилирован без ошибок. Однако, использование тернарного оператора ? : в этом случае может быть не совсем корректным с точки зрения стиля кодирования.
Тернарный оператор ? : предназначен для выбора одного из двух значений в зависимости от условия. Он обычно используется для присваивания значения переменной, например: int x = (a > b) ? a : b;. В вашем коде вы используете тернарный оператор для выполнения двух разных операций присваивания в зависимости от условия: i > 5 ? j = 4 : g = 6;. Это может сделать код менее читабельным и понятным для других программистов.
Потому, что тернарная операция - это присваивание ОДНОЙ переменной результата вычисления одного из двух подвыражений. А в варианте два производится присваивание ДВУМ разным переменным.
Тесты иногда и ошибаются (их люди пишут). А еще могут опираться на устаревшие версии языка.
Заменить можно (оба операнда имеют совместимый тип - int). Скажу больше - можно даже несовместимые типы подружить, если использовать запятую.
Кстати, следуя этой логике, можно было еще выбрать и ответ номер 4. Его можно расписать так же, как вы расписали 2-й вариант.
присваивание идёт слева от оператора, а не внутри его конструкций
то есть
int a = 4;
int b = 3;
int c;
c = a > b ? a : b;
если a больше b, то c присвоить a, иначе c присвоить b.
понятно, как использовать для одной переменной (j = i > 5 ? 4 : 6;) но как быть, если их две (j и g)?