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 значением переменной х.