Страницы

Поиск по вопросам

среда, 5 июня 2019 г.

Почему нельзя 2 + + ++3?

В этом ответе разобрались, что 2 + + 3 читается компилятором как 2 + (+3), то есть второй плюс — унарный.
В таком случае, почему не работает такое?
2 + + ++3
Как бы я это понимал, будучи компилятором:
2 + ( +( ++3 ) )
( ++3 ) — выполнить инкремент и вернуть значение 4 ( +4 ) — унарный плюс к 4, вернуть 4 2 + 4, сложение, вернуть 6
Где ошибка в моем внутреннем компиляторе Java?
Кстати, 2 + + 3++ тоже не работает.


Ответ

Сам понял! Потому что инкременты нельзя применять к константам. Такое работает:
int a = 2; int b = 3; System.out.println(+ a++ + + ++b);

Комментариев нет:

Отправить комментарий