Код программы содержит операции и вызовы функций. Каждая операция включает в себя операнды и операторы, которые определяют требуемые действия. Каждая операция или вызов функции заканчивается символом
";". Если одна строка содержит несколько операторов, то такая строка называется
выражением. Выражение может содержать несколько операндов и операторов, и их порядок выполнения внутри выражения задается
приоритетом. Если выражение содержит операторы одинакового приоритета, то их выполнение осуществляется слева направо в порядке следования. Результатом вычисления выражения является число, объект, метод или пространство имен.
Выполнение операций и вычисление выражений представляет собой линейный алгоритм, в котором операции выполняются последовательно, в порядке их представления в коде программы.
Ниже перечислены типы операторов в порядке их приоритета
Оператор | Описание |
. |
Осуществляет доступ к членам класса или структуры. |
() |
Используется для повышения приоритета других операций. Также используется для вызова метода и делегата. |
[] |
Индексация, или доступ к элементу массива по его индексу. |
++ |
Постфиксный инкремент (увеличивает на 1 значение после его использования). |
-- |
Постфиксный декремент (уменьшает на 1 значение после его использования). |
new |
Создание нового объекта или делегата. |
typeof() |
Получение типа объекта путем вызова стандартного метода GetType() класса Object. |
checked(x) |
Используется для явного включения проверки переполнения при выполнении арифметических действий и преобразований с данными целого типа. |
unchecked(x) |
Используется для подавления проверки переполнения при выполнении арифметических действий и преобразований с данными целого типа. |
default(x) |
Возвращает значение по умолчанию для типа x. |
delegate{} |
Делегат (анонимная функция). |
Унарные операторы
Более низким уровнем приоритета обладают унарные операции.
Унарными называются операции, которые производятся над одним операндом.
Оператор | Описание |
+ |
Знак "+". |
- |
Знак "-". |
! |
Логическое отрицание (выполняется над данными логического типа). |
~ |
Поразрядное логическое отрицание (выполняется над данными целого или логического типа). |
++ |
Префиксный инкремент, перед использованием операнда увеличивает его значение на 1. |
-- |
Префиксный декремент, перед использованием операнда уменьшает его значение на 1. |
(тип)x |
Явное преобразование x к указанному типу. |
Бинарные мультипликативные и аддитивные операторы
Далее следуют бинарные
мультипликативные и
аддитивные операторы. Мультипликативные операторы имеют более высокий уровень приоритета по сравнению с аддитивными.
Бинарные операторы выполнятся над двумя операндами, чаще всего одного типа.
Оператор | Описание |
* |
Умножение. |
/ |
Деление. |
% |
Получение остатка от деления. |
+ |
Сложение, также используется для объединения строк или делегатов. |
- |
Вычитание, также используется для удаления делегатов. |
Операторы сдвига
Операторы сдвига осуществляют арифметический сдвиг на заданное число разрядов.
Операции сдвига осуществляются только над целочисленными данными.
Арифметический сдвиг предполагает, что при сдвиге числа вправо освобождающиеся разряды заполняются значением знакового разряда если число представлено в знаковой форме, и нулем если число представлено в беззнаковой форме.
Сдвиг числа влево на один разряд соответствует умножению числа на 2. Сдвиг влево на два разряда соответствует умножению на 4, сдвиг на три разряда - умножению на 8 соответственно.
Сдвиг числа вправо на один разряд соответствует его целочисленному делению на 2 (остаток от деления выходит за пределы разрядной сетки).
Оператор | Описание |
x << y |
Сдвиг x влево на y разрядов. |
x >> y |
Сдвиг x вправо на y разрядов. |
Операторы сравнения и отношения
Операторы сравнения и отношения возвращают значение
True если условие сравнения выполняется и
False в противном случае.
Оператор | Описание |
x > y |
Больше. |
x < y |
Меньше. |
x >= y |
Больше или равно. |
x <= y |
Меньше или равно. |
x == y |
Проверка на равенство. |
x != y |
Проверка на неравенство. |
x is T |
Возвращает значение True, если x соответствует типу T, в противном случае возвращает ложь False. |
x as T |
Выполнение определенных преобразований типов между ссылочными типами. |
Логические операторы
Оператор | Описание |
x & y |
Логическое И для операндов целого или логического типа (поразрядное). |
x | y |
Логическое ИЛИ для операндов целого или логического типа (поразрядное). |
x ^ y |
Логическое исключающее ИЛИ для операндов целого или логического типа (поразрядное). |
x && y |
Условное И для операндов логического типа. |
x || y |
Условное ИЛИ для операндов логического типа. |
x ?? y |
Объединение с NULL: возвращает значение x, но если x=NULL, возвращает значение y. |
x ? y : z |
Тернарная операция, возвращает y если выполняется выражение x или z в противном случае. |
Поразрядные логические операции выполняются над целочисленными данными. Для того чтобы определить результат поразрядной логической операции необходимо перевести операнды в двоичную систему счисления и выполнить поразрядную операцию над всеми отдельно взятыми разрядами числа. Поразрядные логические операции часто используются если требуется установить или сбросить отдельный бит в числе.
Результат выполнения бинарных логических операций генерируется в соответствии с таблицей истинности:
a | b | a & b | a | b | a ^ b |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
Рассмотрим пример
Операторы присваивания и анонимные операторы
Если арифметические или логические операции совмещаются с оператором присваивания, то выполнение производится в следующем порядке:
X +=Y; //аналогично X=X+Y
В качестве знака операции может использоваться один из допустимых символов, представленных в таблице ниже.
Оператор | Описание |
= |
Присваивание. |
*= |
Присваивание после умножения. |
/= |
Присваивание после деления. |
%= |
Присваивание после получения остатка от деления. |
+= |
Присваивание после сложения. |
-= |
Присваивание после вычитания. |
&= |
Присваивание после поразрядного И. |
|= |
Присваивание после поразрядного ИЛИ. |
^= |
Присваивание после поразрядного исключающего ИЛИ. |
<<= |
Присваивание после сдвига влево. |
>>= |
Присваивание после сдвига вправо. |
=> |
Лямбда-оператор. |
Закрепить тему операторов и выражений Вы можете в разделе
Логика
курса
Алгоритмика
Автор: Вставская Елена Владимировна
Написать комментарий: