Существует разница большая между постфиксной и префиксной версиями ++
.
В префиксной версии (т. Е. ++i
) значение i
увеличиваетсяи значением выражения является новое значение i
.
В постфиксной версии (т. е. i++
) значение i
увеличивается, нозначение выражения является оригинальным значением i
.
Давайте проанализируем следующий код строка за строкой:
int i = 10; // (1)
int j = ++i; // (2)
int k = i++; // (3)
i
10
(просто). - В этой строке две вещи:
i
увеличивается до 11
. - new значение
i
копируется в j
.Поэтому j
теперь равно 11
.
- В этой строке также есть две вещи:
i
увеличивается до 12
. - оригинал значение
i
(то есть 11
) копируется в k
.Таким образом, k
теперь равно 11
.
Так что после выполнения кода i
будет 12, но и j
и k
будет 11.
То же самое относится к постфиксным и префиксным версиям --
.