Тернарный оператор, синтаксическая ошибка при использовании присваивания
Следующие 3 строки кода ниже компилируют ОК. (Обратите внимание, что этот код является примером «искусственного кодирования Java» и, следовательно, не будет встречаться в профессионально написанном коде.)
int x, y;
boolean b=true;
x = b ? y=1 : 2; // Compiles OK.
Если я сейчас изменю код в строке № 3 выше, чтобы он выглядел как следующая строка кода ниже, компилятор выдаст ошибку.
// Change the position of the "y assignment", and now the code doesn't compile.
x = b ? 1 : y=2;
Вот сообщение об ошибке синтаксиса:
Может кто-нибудь объяснить, пожалуйста, это поведение (новичку в изучении Java)? Спасибо.