Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование лекции.doc
Скачиваний:
32
Добавлен:
03.12.2018
Размер:
4.85 Mб
Скачать

5.1.1.1 Арифметические операции

К этой категории операций относятся те операции, которые используются для построения арифметических выражений (табл. 5.1).

Таблица 5.1 Арифметические операции С#

Знак операции

Название

+

Сложение

-

Вычитание

*

Умножение

/

Деление

%

Остаток от деления

++

Инкремент

- -

Декремент

Результат вычисления выражения характеризуется значением и типом. Например, пусть х и у – переменные целого типа и описаны так:

int х = 2, у = 9;

Тогда выражение х + у имеет значение 11 и тип int, а выражение х= у имеет значение, равное значению, помещенному в переменную у, и тип, совпадающий с типом этой переменной. Хотя в таблице 5.1 присутствуют в большей части знакомые операции, без пояснений их выполнения в языке С# не обойтись. Далее приведен ряд необходимых комментариев по поводу использования помещенных в данную таблицу операций.

Знак умножения «*» опускать нельзя, он везде проставляется явно.

Унарный знак «+», поставленный перед величиной, не оказывает никакого влияния на значение этой величины. Унарный знак «-« в такой ситуации приводит к изменению знака величины.

Далее рассмотрим бинарные операции.

  1. Назначение аддитивных операций: сложение и вычитание, мультипликативных: умножение «*» и деление «/» вполне ясен: возвратить результат сложения или вычитания, или умножения, или деления двух величин. Они определены для типов int, uint, long, ulong, float, double и decimal. К величинам других типов их можно применять, если для них существует неяв­ное преобразование к этим типам. Тип результата операции равен «наибольшему» из типов операндов, но не менее int.

  2. Если оба операнда при выполнении операций: сложение, вычитание, умножение целочисленные или типа decimal и результат операции слиш­ком велик для представления с помощью заданного типа, в проверяемом контексте генерируется исключе­ние System.OverflowException. В непроверяемом контексте исключение не выбрасывается, но отбрасываются избыточные биты.

  3. Для вещественных чисел результат операций умножения или деления двух операндов даст либо конечное значение, либо 0, если результат очень мал, либо «бесконечность», если результат слишком велик.

  4. Если оба операнда целочисленные, результат операции деления округляется вниз до ближайшего целого числа, например: 13/5 даст результат 2. Если делитель равен нулю, в проверяемом контексте генерируется исключение System.DivideByZeroException.

  5. Если хотя бы один из операндов операции деления вещественный, дробная часть результата деления не отбрасывается.

  6. Операция остаток от деления в C# может быть применена как к целым типам, так и к вещественным. При применении к целым числам операции деления «/» остаток будет отброшен. Например: операция 13/5 даст результат 2.

  7. Для получения остатка от деления необходимо применять знак «%». Результат операции с целочисленными операндами вычисляется по формуле х - (х / у) * у. Например: операция 13%5 даст результат 3.

  8. В C# операция «%» применима не только к целым числам, но и к числам с плавающей точкой. В этом случае результат операции вычисляется по формуле x - n * у, где n — наибольшее целое, меньшее или равное результа­ту деления x на y.

Например: операция 13.0%5.0 даст также результат 3.

  1. Операция инкремент вызывает увеличение аргумента на 1, а операция декремент – уменьшение значения аргумента на 1.

Таким образом, выражение к=к+1 аналогично выражению к++, а выражение к=к-1 аналогично выражению к--. В приведенных только что видах выражений для данных операций двойные знаки «++» или «- -» располагаются после имени переменной.

  1. Вообще в C# операции инкремента и декремента имеют две формы:

  • префиксную ++к, - -к;

  • постфиксную к++, к- -.

Каждая из этих форм по-своему влияет на вычисление выражений.

  1. При вычислении выражений в случае, если знак операция стоит перед операндом, вначале выполняется вычисление инкремента или декремента, а только затем новое значение операнда будет использовано в вычислении остальной части выражения.

  2. Постфиксная запись указанных операций приводит к вычислению выражений при неизменном операнде, и только после получения его значения происходит изменение аргумента на единицу.