Я прочитал из официального руководства по Java, что префикс и постфикс ++ - имеют разные приоритеты:
постфикс: expr ++ expr -
unary: ++ 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.