Результат и остаток от деления 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("Ряд чисел, полученных " +

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

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

 

 


Дата добавления: 2019-02-12; просмотров: 355; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!