В этом ответе разобрались, что 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);
Комментариев нет:
Отправить комментарий