Я прочитал из официального руководства по Java, что префикс и постфикс ++ имеют разные приоритеты:
Постфикс: expr ++ expr -
унарный: ++ expr --expr + expr -expr ~!
Операторы
Согласно учебнику, не должно ли это
d = 1; System.out.println(d++ + ++d);
распечатать 6 (d++
делает d 2, ++d
делает 3) вместо 4?
Я знаю объяснение того, как ++d
вычисляется заранее, но если d++
имеетболее высокий приоритет, чем ++d
, почему d++
не оценивается первым?И более того, в каком случае d++
показывает, что он имеет более высокий приоритет?
РЕДАКТИРОВАТЬ:
Я пробовал следующее:
d = 1; System.out.println(++d * d++);
Возвращает 4. Кажется, что это должно быть 2 * 2 вместо 1 * 3.