Чтение онлайн

на главную - закладки

Жанры

Полное руководство. С# 4.0
Шрифт:

Арифметические операторы, представленные в языке С#, приведены ниже. Оператор Действие + Сложение - Вычитание, унарный минус * Умножение / Деление % Деление по модулю — Декремент ++ Инкремент

Операторы +, -, * и / действуют так, как предполагает их обозначение. Их можно применять к любому встроенному числовому типу данных.

Действие арифметических операторов не требует особых пояснений, за исключени ем следующих особых случаев. Прежде всего, не следует забывать, что когда оператор / применяется к целому числу, то любой остаток от деления отбрасывается; например, результат целочисленного деления 10/3 будет равен 3. Остаток от этого деления

можно получить с помощью оператора деления по модулю (%), который иначе называется оператором вычисления остатка. Он дает остаток от целочисленного деления. Напри мер, 10 % 3 равно 1. В C# оператор % можно применять как к целочисленным типам данных, так и к типам с плавающей точкой. Поэтому 10.0 % 3.0 также равно 1. В этом отношении C# отличается от языков С и C++, где операции деления по модулю разрешаются только для целочисленных типов данных. В приведенном ниже примере программы демонстрируется применение оператора деления по модулю. // Продемонстрировать применение оператора %. using System; class ModDemo { static void Main { int iresult, irem; double dresult, drem; iresult = 10 / 3; irem = 10 % 3; dresult = 10.0 / 3.0; drem = 10.0 % 3.0; 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. Следовательно, оператор х++;

равнозначен оператору х = x + 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; У = 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# не имеет смысла.

Поделиться:
Популярные книги

Назад в СССР 5

Дамиров Рафаэль
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Назад в СССР 5

Убивать чтобы жить 9

Бор Жорж
9. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 9

Аргумент барона Бронина 3

Ковальчук Олег Валентинович
3. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 3

Затерянные земли или Великий Поход

Михайлов Дем Алексеевич
8. Господство клана Неспящих
Фантастика:
фэнтези
рпг
7.89
рейтинг книги
Затерянные земли или Великий Поход

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Орден Багровой бури. Книга 1

Ермоленков Алексей
1. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 1

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Отмороженный

Гарцевич Евгений Александрович
1. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный

Законы Рода. Том 10

Flow Ascold
10. Граф Берестьев
Фантастика:
юмористическая фантастика
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 10

Имя нам Легион. Том 2

Дорничев Дмитрий
2. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 2

Возрождение Феникса. Том 2

Володин Григорий Григорьевич
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Возрождение Феникса. Том 2

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Безумный Макс. Ротмистр Империи

Ланцов Михаил Алексеевич
2. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
4.67
рейтинг книги
Безумный Макс. Ротмистр Империи

Санек 2

Седой Василий
2. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 2