Разница между пост-приращением / декрементом и предварительным приращением / декрементом находится в оценке выражения .
Предварительное приращение и pre -decrement приращивают (или уменьшают) их операнд на 1, а значение выражения является полученным приращенным (или уменьшенным) значением. Напротив, операторы пост-приращения и пост-декременты увеличивают (или уменьшают) значение их операнда на 1, но значение выражения является исходным значением операнда до операции приращения (или уменьшения).
Другими словами:
int a = 5; int b; b = --a; // the value of the expression --a is a-1. b is now 4, as is a. b = a--; // the value of the expression a-- is a. b is still 4, but a is 3.
Помните, что программа должна оценивать выражения, чтобы сделать все . Все это выражение, даже просто случайное упоминание переменной. Все следующие выражения:
a
a-1
--a && ++a
System.out.println(a)
Конечно, при оценке выражений приоритет оператора диктует значение выражения так же, как PEMDAS , которое вы узнали в классе школа. Некоторые операторы, такие как приращение / декремент, имеют побочные эффекты, что, конечно же, очень весело, и одна из причин, почему было создано функциональное программирование.