×
Traktatov.net » C# 4.0: полное руководство » Читать онлайн
Страница 50 из 650 Настройки

>

>    Console.WriteLine("Результат и остаток от деления 10/3: "

>           + iresult + " " + irem);

>    Console.WriteLine("Результат и остаток от деления 10.0 / 3.0: "

>           + dresult + " " + drem);

>  }

>}


Результат выполнения этой программы приведен ниже.


>Результат и остаток от деления 10/3: 3 1

>Результат и остаток от деления 10.0 / 3.0: 3.33333333333333 1


Как видите, обе операции, % целочисленного типа и с плавающей точкой, дают один и тот же остаток, равный 1.


Операторы инкремента и декремента

Операторы инкремента (++) и декремента (—) были представлены в главе 2. Как станет ясно в дальнейшем, они обладают рядом особых и довольно интересных свойств. Но сначала выясним основное назначение этих операторов.

Оператор инкремента увеличивает свой операнд на 1, а оператор декремента уменьшает операнд на 1. Следовательно, оператор


>х+ + ;


равнозначен оператору х = х + 1; а оператор


>х--;


равносилен оператору


>х = х - 1;


Следует, однако, иметь в виду, что в инкрементной или декрементной форме значение переменной х вычисляется только один, а не два раза. В некоторых случаях это позволяет повысить эффективность выполнения программы.

Оба оператора инкремента и декремента можно указывать до операнда (в префиксной форме) или же после операнда (в постфиксной форме). Например, оператор


>х = х + 1;


может быть записан в следующем виде:


>++х; // префиксная форма


или же в таком виде:


>х++; // постфиксная форма


В приведенном выше примере форма инкремента (префиксная или постфиксная) особого значения не имеет. Но если оператор инкремента или декремента используется в длинном выражении, то отличие в форме его записи уже имеет значение. Когда оператор инкремента или декремента предшествует своему операнду, то результатом операции становится значение операнда после инкремента или декремента. А когда оператор инкремента или декремента следует после своего операнда, то результатом операции становится значение операнда до инкремента или декремента. Рассмотрим следующий фрагмент кода.


>х = 10;

>у = ++х;


В данном случае значение переменной у будет установлено равным 11, поскольку значение переменной х сначала увеличивается на 1, а затем присваивается переменной у. Но во фрагменте кода


>х = 10;

>у = х++;


значение переменной у будет установлено равным 10, так как в этом случае значение переменной х сначала присваивается переменной у, а затем увеличивается на 1. В обоих случаях значение переменной х оказывается равным 11. Отличие состоит лишь том, когда именно это значение станет равным 11: до или после его присваивания переменной у.

Возможность управлять моментом инкремента или декремента дает немало преимуществ при программировании. Обратимся к следующему примеру программы, в которой формируется последовательный ряд чисел.


>// Продемонстрировать отличие между префиксной

>// и постфиксной формами оператора инкремента (++).

>using System;

>class PrePostDemo {

>  static void Main() {

>    int x, y;

>    int i;


>    x = 1;

>    y = 0;

>    Console.WriteLine("Ряд чисел, полученных " +

>              "с помощью оператора у = у + х++;");