Добавить в цитаты Настройки чтения

Страница 31 из 502

<b>// Продемонстрировать применение оператора %.</b>

<b>using System;</b>

<b>class ModDemo {</b>

<b>  static void Main() { </b>

<b>    int iresult, irem; </b>

<b>    double dresult, drem;</b>

<b>    iresult = 10 / 3; </b>

<b>    irem = 10 % 3;</b>

<b>    dresult = 10.0 / 3.0; </b>

<b>    drem = 10.0 % 3.0;</b>

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

<b>           + iresult + &quot; &quot; + irem);</b>

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

<b>           + dresult + &quot; &quot; + drem);</b>

<b>  }</b>

<b>}</b>

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

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

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

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

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

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

<b>х+ + ;</b>

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

<b>х--;</b>

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

<b>х = х - 1;</b>

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

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

<b>х = х + 1;</b>

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

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

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

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

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

<b>х = 10; </b>

<b>у = ++х;</b>

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

<b>х = 10;</b>

<b>у = х++;</b>

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

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

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

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

<b>using System;</b>

<b>class PrePostDemo { </b>

<b>  static void Main() { </b>

<b>    int x, y;</b>

<b>    int i;</b>

<b>    x = 1;</b>

<b>    y = 0;</b>

<b>    Console.WriteLine(&quot;Ряд чисел, полученных &quot; +</b>

<b>              &quot;с помощью оператора у = у + х++;&quot;);</b>

<b>    for(i = 0; i &lt; 10; i++)    {</b>

<b>      y = y + x++;    // постфиксная форма оператора ++</b>

<b>      Console.WriteLine(y + &quot; &quot;);</b>

<b>    }</b>

<b>    Console.WriteLine();</b>

<b>    x = 1; </b>

<b>    y = 0;</b>

<b>    Console.WriteLine(&quot;Ряд чисел, полученных    &quot; +</b>

<b>              &quot;с помощью оператора у = у + ++х;&quot;);</b>

<b>    for(i = 0; i &lt; 10; i++)    {</b>

<b>      y = y + ++x;    // префиксная форма оператора ++</b>