Оба оператора инкремента и декремента можно указывать до операнда (в префикс ной форме) или же после операнда (в постфиксной форме). Например, оператор х = х + 1;
может быть записан в следующем виде: ++х; // префиксная форма
или же в таком виде: х++; // постфиксная форма
В приведенном выше примере форма инкремента (префиксная или постфиксная) особого значения не имеет. Но если оператор инкремента или декремента использу ется в длинном выражении, то отличие в форме его записи уже имеет значение. Когда оператор инкремента или декремента предшествует своему операнду, то результатом операции становится значение операнда после инкремента или декремента. А когда оператор инкремента или декремента следует после своего операнда, то результатом операции становится значение операнда до инкремента или декремента. Рассмотрим следующий фрагмент кода. х = 10; у = ++х;
В данном случае значение переменной у будет установлено равным 11, поскольку значение переменной х сначала увеличивается на 1, а затем присваивается переменной у. Но во фрагменте кода х = 10; у = х++;
значение переменной у будет установлено равным 10, так как в этом случае значение переменной х сначала присваивается переменной у, а затем увеличивается на 1. В обо их случаях значение переменной х оказывается равным 11. Отличие состоит лишь том, когда именно это значение станет равным 11: до или после его присваивания пере менной у.
Возможность управлять моментом инкремента или декремента дает немало пре имуществ при программировании. Обратимся к следующему примеру программы, в которой формируется последовательный ряд чисел. // Продемонстрировать отличие между префиксной // и постфиксной формами оператора инкремента (++). using System; class PrePostDemo { static void Main { int x, y; int i; x = 1; У = 0; Console.WriteLine("Ряд чисел, полученных " + "с помощью оператора у = у + х++;"); for(i = 0; i < 10; i++) { у = у + х++; // постфиксная форма оператора ++ Console.WriteLine(у + " "); } Console.WriteLine; x = 1; У = 0; Console.WriteLine("Ряд чисел, полученных " + "с помощью оператора у = у + ++х;"); for(i = 0; i < 10; i++) { у = у + ++х; // префиксная форма оператора ++ Console.WriteLine(у + " "); } Console.WriteLine; } }
Выполнение этой программы дает следующий результат. Ряд чисел, полученных с помощью оператора у = у + х++ 1 3 6 10 15 14 21 28 36 45 55 Ряд чисел, полученных с помощью оператора у = у + ++х; 2 5 9 14 20 27 35 44 54 65
Как подтверждает приведенный выше результат, в операторе у = у + х++;
первоначальное значение переменной х складывается с самим собой, а полученный результат присваивается переменной у. После этого значение переменной х увеличи вается на 1. Но в операторе у = у + ++х;
значение переменной х сначала увеличивается на 1, затем складывается с первоначаль ным значением этой же переменной, а полученный результат присваивается пере менной у. Как следует из приведенного выше результата, простая замена префиксной формы записи оператора ++х постфиксной формой х++ приводит к существенному изменению последовательного ряда получаемых чисел.
И еще одно замечание по поводу приведенного выше примера: не пугайтесь выра жений, подобных следующему: у + ++x
Такое расположение рядом двух операторов может показаться не совсем привыч ным, но компилятор воспримет их в правильной последовательности. Нужно лишь запомнить, что в данном выражении значение переменной у складывается с увеличен ным на 1 значением переменной х. Операторы отношения и логические операторы
В обозначениях оператор отношения и логический оператор термин отношения озна чает взаимосвязь, которая может существовать между двумя значениями, а термин логический — взаимосвязь между логическими значениями "истина" и "ложь". И по скольку операторы отношения дают истинные иди ложные результаты, то они неред ко применяются вместе с логическими операторами. Именно по этой причине они и рассматриваются совместно в данном разделе.
Ниже перечислены операторы отношения. Оператор Значение == Равно != Не равно > Больше < Меньше > Больше или равно <= Меньше или равно
К числу логических относятся операторы, приведенные ниже.
Результатом выполнения оператора отношения или логического оператора являет ся логическое значение типа bool.
В целом, объекты можно сравнивать на равенство или неравенство, используя опе раторы отношения == и !=. А операторы сравнения <, >, <= или >= могут применяться только к тем типам данных, которые поддерживают отношение порядка. Следователь но, операторы отношения можно применять ко всем числовым типам данных. Но зна чения типа bool могут сравниваться только на равенство или неравенство, поскольку истинные (true) и ложные (false) значения не упорядочиваются. Например, сравне ние true > false в C# не имеет смысла.