Инкремент и декремент

Операции ++ и -- это операции инкремента и декремента. Как вы вскоре убедитесь, эти операции обладают рядом особых свойств, которые делают их достаточно интересными.

Рассмотрим, что именно делают операции инкремента и декремента.

Операция инкремента увеличивает значение операнда на единицу. Операция декремента уменьшает значение операнда на единицу. Например, следующий оператор:

х = х + 1;

с применением операции инкремента можно записать в таком виде: х++;

Аналогично, оператор

х = х — 1; эквивалентен оператору

Эти операции отличаются тем, что они могут быть записаны как в постфиксной форме, когда символ операции следует за операндом, как в приведенных примерах, так и в префиксной форме, когда он предшествует операнду. В приведенных примерах применение любой из этих форм не имеет никакого значения. Однако, когда операции инкремента/ декремента являются частью более сложного выражения, проявляется внешне незначительное, но важное различие между этими двумя формами. В префиксной форме значение операнда увеличивается или уменьшается до извлечения значения для использования в выражении. В постфиксной форме предыдущее значение извлекается для использования в выражении, и лишь после этого значение операнда изменяется. Например:

х = 42;
у = ++х;

В этом случае значение у устанавливается равным 43, как и можно было ожидать, поскольку увеличение значения выполняется перед присваиванием значения х переменной у. Таким образом, строка у=++х эквивалентна следующим двум операторам:

х = х + 1;
У = х;

Однако если операторы записать как

х = 42;
у = х++;

значение переменной х извлекается до выполнения операции инкремента, и поэтому значение переменной у равно 42. Конечно, в обоих случаях значение переменной х установлено равным 43. Следовательно, строка у=х++; эквивалентна следующим двум операторам:

у = х;
х = х + 1;

Следующая программа демонстрирует применение операции инкремента.

// Демонстрация применения операции ++.
class IncDec {
public static void main(String args[]) {
int a = 1;
int b = 2;
int c;
int d;
с = ++b;
d = a++;
С++;
System.out.println("a = " + a);
System.out.println("b = " + b) ;
System.out.println("c = " + c) ;
System.out.println("d = " + d) ;
}
}