х = х - 1;
Следует, однако, иметь в виду, что в инкрементной или декрементной форме значение переменной х вычисляется только один, а не два раза. В некоторых случаях это позволяет повысить эффективность выполнения программы.
Оба оператора инкремента и декремента можно указывать до операнда (в префиксной форме) или же после операнда (в постфиксной форме). Например, оператор
х = х + 1;
может быть записан в следующем виде:
++х; // префиксная форма
или же в таком виде:
х++; // постфиксная форма
В приведенном выше примере форма инкремента (префиксная или постфиксная) особого значения не имеет. Но если оператор инкремента или декремента используется в длинном выражении, то отличие в форме его записи уже имеет значение. Когда оператор инкремента или декремента
х = 10; у = ++х;
В данном случае значение переменной у будет установлено равным 11, поскольку значение переменной х сначала увеличивается на 1, а затем присваивается переменной у. Но во фрагменте кода
X = 10;
у = х++;
значение переменной у будет установлено равным 10, так как в этом случае значение переменной х сначала присваивается переменной у, а затем увеличивается на 1. В обоих случаях значение переменной х оказывается равным 11. Отличие состоит лишь том, когда именно это значение станет равным 11: до или после его присваивания переменной у.
Возможность управлять моментом инкремента или декремента дает немало преимуществ при программировании. Обратимся к следующему примеру программы, в которой формируется последовательный ряд чисел.
// Продемонстрировать отличие между префиксной // и постфиксной формами оператора инкремента (++).
using System;
class PrePostDemo { static void Main() { int* x, y;
int i;
x = 1;
У = 0;
Console.WriteLine('Ряд чисел, полученных ' +
'с помощью оператора у = у + х++;'),
for(i = 0; i < 10; i++) {
у = у + х++; // постфиксная форма оператора ++
Console.WriteLine(у + ' ');
}
Console.WriteLine();
х = 1; у = 0;
Console.WriteLine('Ряд чисел, полученных ' +
'с помощью оператора у = у + ++х;')<
for(i = 0; i < 10; i++) {
у = у + ++х; // префиксная форма оператора ++
Console.WriteLine(у + ' ');
}
Console.WriteLine();
}
}
Выполнение этой программы дает следующий результат.