C# 4.0: полное руководство | страница 63
>
>у = х++;
значение переменной у будет установлено равным 10, так как в этом случае значение переменной х сначала присваивается переменной у, а затем увеличивается на 1. В обоих случаях значение переменной х оказывается равным 11. Отличие состоит лишь том, когда именно это значение станет равным 11: до или после его присваивания переменной у.
Возможность управлять моментом инкремента или декремента дает немало преимуществ при программировании. Обратимся к следующему примеру программы, в которой формируется последовательный ряд чисел.
>// Продемонстрировать отличие между префиксной
>// и постфиксной формами оператора инкремента (++).
>using System;
>class PrePostDemo {
> static void Main() {
> int x, y;
> int i;
> x = 1;
> y = 0;
> Console.WriteLine("Ряд чисел, полученных " +
> "с помощью оператора у = у + х++;");
> for(i = 0; i < 10; i++) {
> y = y + x++; // постфиксная форма оператора ++
> Console.WriteLine(y + " ");
> }
> Console.WriteLine();
> x = 1;
> y = 0;
> Console.WriteLine("Ряд чисел, полученных " +
> "с помощью оператора у = у + ++х;");
> for(i = 0; i < 10; i++) {
> y = y + ++x; // префиксная форма оператора ++
> Console.WriteLine(y + " ");
> }
> Console.WriteLine();
> }
>}
Выполнение этой программы дает следующий результат.
>Ряд чисел, полученных с помощью оператора у = у + х++
>1
>3
>б
>10
>15
>14
>21
>28
>36
>45
>55
>Ряд чисел, полученных с помощью оператора у = у + ++х;
>2
>5
>9
>14
>20
>27
>35
>44
>54
>65
Как подтверждает приведенный выше результат, в операторе
>у = у + х++;
первоначальное значение переменной х складывается с самим собрй, а полученный результат присваивается переменной у. После этого значение переменной х увеличивается на 1. Но в операторе
>у = у + ++;
значение переменной х сначала увеличивается на 1, затем складывается с первоначальным значением этой же переменной, а полученный результат присваивается переменной у. Как следует из приведенного выше результата, простая замена префиксной формы записи оператора ++х постфиксной формой х++ приводит к существенному изменению последовательного ряда получаемых чисел.
И еще одно замечание по поводу приведенного выше примера: не пугайтесь выражений, подобных следующему:
>у + ++х;
Такое расположение рядом двух операторов может показаться не совсем привычным, но компилятор воспримет их в правильной последовательности. Нужно лишь запомнить, что в данном выражении значение переменной у складывается с увеличенным на 1 значением переменной х.