Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операции и выражения 40.docx
Скачиваний:
1
Добавлен:
27.09.2019
Размер:
65.19 Кб
Скачать

Операции языка C# и особенности их использования

В ряде учебников по языку C# операции языка называются операторами. Не претендуя на абсолютную истину, попробую не согласиться с этим утверждением. Всё-таки традиционно оператором считается не указание совершить действие, а выражение, описывающее законченное действие. Например, про выражение «a = b + c;» можно сказать, что это «оператор присваивания результата операции сложения двух чисел». Вряд ли правильно говорить, что это «оператор сложения». Исходя из данного соображения, я буду разделять операции и операторы.

1) Операция присваивания

Операция, обозначаемая знаком =, называется операцией присваивания. Данная операция является бинарной, имеет два операнда. Например, X=Y. Операнд слева от знака может быть только переменной, объектом. Операнд справа может быть выражением, т.е. записью в которой используются знаки других операций. Как правило, операция = является главной операцией, образующей оператор присваивания.

Имеется интересная особенность этой операции. Она допускает цепочку присваиваний. Например, X=Y=Z=10;

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

Различают 5 операций, выполняющих арифметические действия над числами.

Операция

Назначение

Пример

+

Сложение

X = x + y

Вычитание

X = x – y

*

Умножение

Z = x * y

/

Деление

Z = x / y

%

Деление по модулю

Z = t % e

Выполнение первых трёх операций очевидно и не требует пояснения. А вот операция деления зависит от типа данных. Если тип данных, участвующих в операции, вещественный, то результат получится по правилам деления с целой и дробной частью. Если тип целый, то результатом деления также является целое число.

Деление по модулю возможно только для целых чисел. Оно обеспечивает получение остатка от деления двух целых чисел. Например, в результате операции 15 % 4 получится число 3. Таким образом, пара операций / и % обеспечивает для целых чисел специфическую возможность: можно получить и целую часть, и остаток от деления.

Арифметические операции можно объединять вместе с операцией присваивания, записывая две операции в виде одной. Это так называемая сокращённая форма записи.

Например:

обычная запись: a = a + Stoim;

сокращённая форма: a+=Stoim;

К арифметическим операциям относятся две специфические операции – инкремент и декремент. Эти операции позволяют изменять значения переменных на 1. Инкремент – увеличивает, обозначается знаком ++. Декремент – уменьшает, обозначается знаком --. По сути дела, эти операции являются сокращённой формой записи для выражений типа i = i +1 и i = i – 1. Например, вместо a = a + 1; можно записать: a++; (постфиксный вариант) или ++a; (префиксный вариант). Аналогично: --Prim; Prim--;

Между двумя последними формами нет никакой разницы, если эти операции являются единственными в записи выражения, т.е. используются самостоятельно. Если же речь идёт об использовании в сложном выражении, то приходится учитывать, когда на самом деле выполняются эти операции. Суть в том, что при постфиксном варианте записи значение переменной сначала используется, а потом изменяется на 1. При префиксном, наоборот, сначала изменяется, а потом используется.

Например:

t = 5; // t = 5

n = 4 * t++; // n = 20, t = 6

k = ++n / 3; // n = 21, k = 7

b = --k / t; // k = 6, b = 1

3) Поразрядные операции

В C# имеются операции, пригодные для обработки отдельных разрядов памяти (например, в видеопамяти графического дисплея). Такие операции называются поразрядными (операции с битами). Они позволяют изменять, считывать и сдвигать разряды в переменных. При этом переменная рассматривается не как число, а как комбинация двоичных разрядов, т.е. как логический код. Операция выполняется отдельно над каждым разрядом. Перечень поразрядных операций приведён в следующей таблице.

Операция

Назначение

Пример

&

Поразрядное И

i & 16

|

Поразрядное ИЛИ

i | 12

^

Поразрядное Исключающее ИЛИ

k ^10

~

Поразрядное НЕ

~ a

<<

Поразрядный сдвиг влево

<< 2

>>

Поразрядный сдвиг вправо

>> 2

Существует краткая форма поразрядных операций присваивания. Например:

x &= y вместо x = x & y

Поразрядные операции можно использовать только с целочисленными типами данных, к вещественным числам их применять нельзя!!!

Пример 1:

int k = 26;

k & 15 // 10

k | 15 // 31

k ^ 15; // 21

k << 2 // 104

k >> 2 // 6

Пример 2:

Выделить пятый бит в байте B, а остальные обнулить.

В = (B & 4);