Страница 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("Результат и остаток от деления 10/3: "</b>
<b> + iresult + " " + irem);</b>
<b> Console.WriteLine("Результат и остаток от деления 10.0 / 3.0: "</b>
<b> + dresult + " " + 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("Ряд чисел, полученных " +</b>
<b> "с помощью оператора у = у + х++;");</b>
<b> for(i = 0; i < 10; i++) {</b>
<b> y = y + x++; // постфиксная форма оператора ++</b>
<b> Console.WriteLine(y + " ");</b>
<b> }</b>
<b> Console.WriteLine();</b>
<b> x = 1; </b>
<b> y = 0;</b>
<b> Console.WriteLine("Ряд чисел, полученных " +</b>
<b> "с помощью оператора у = у + ++х;");</b>
<b> for(i = 0; i < 10; i++) {</b>
<b> y = y + ++x; // префиксная форма оператора ++</b>