Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ермаков / 17. Приложение 1.docx
Скачиваний:
261
Добавлен:
19.04.2015
Размер:
4.69 Mб
Скачать

4. Унарные операторы

Выражение

Описание

+x

Удостоверение

-x

Отрицание

!x

Логическое отрицание

~x

Поразрядное отрицание

++x

Префиксное приращение

--x

Префиксное уменьшение

(T)x

Явное преобразование x в тип T

5. Мультипликативные операторы

Выражение

Описание

*

Умножение

/

Деление

%

Остаток

6. Аддитивные операторы

Выражение

Описание

x + y

Сложение, объединение строк, объединение делегатов

x - y

Вычитание, удаление делегатов

7. Операторы сдвига

Выражение

Описание

x << y

Сдвиг влево

x >> y

Сдвиг вправо

8. Операторы отношения и типа

Выражение

Описание

x < y

Меньше

x > y

Больше

x <= y

Меньше или равно

x >= y

Больше или равно

x is T

Возвращает значение true, если x относится к типу T, в противном случае возвращает значение false

x as T

Возвращает x типа T или нулевое значение, если x не относится к типу T

9. Операторы равенства

Выражение

Описание

x == y

Равно

x != y

Не равно

10. Логические, условные операторы и NULL-операторы

Категория

Выражение

Описание

Логическое И

x & y

Целочисленное поразрядное AND, логическое AND

Логическое исключающее XOR

x ^ y

Целочисленное поразрядное исключающее XOR, логическое исключающее XOR

Логическое ИЛИ

x | y

Целочисленное поразрядное OR, логическое OR

Условное AND

x && y

Вычисляет y только если x имеет значение true

Условное OR

x || y

Вычисляет y только если x имеет значение false

Объединение нулей

x ?? y

Равно y, если x — нулевое, в противном случае равно x

Условная

x ?: y : z

Равно y, если x имеет значение true, z если x имеет значение false

11. Операторы назначения и анонимные операторы

Выражение

Описание

=

Присваивание

x op= y

Составное присваивание. Поддерживает следующие операторы: +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>=

(T x) => y

Анонимная функция (лямбда-выражение)

12. Ассоциативность

Когда выражение содержит два или более операторов с одинаковым порядком применения, они вычисляются на основе ассоциативности. Запросы с левой ассоциативностью вычисляются слева направо. Например, x * y / z вычисляется как (x * y) / z. Запросы с правой ассоциативностью вычисляются справа налево. Например, оператор присваивания является право ассоциативным. Если бы это было не так, следующий код вызвал бы ошибку:

int a, b, c;

c = 1;

// Эквиваленты строчки ниже

a = b = c;

a = (b = c);

// Ошибка

//(a = b) = c;

Операторы присваивания и троичный оператор (?:) имеют правую ассоциативность. Все прочие двоичные операторы имеют левую ассоциативность.

Независимо от того, используется ли для операторов в выражении левая ассоциация или правая ассоциация, сначала оцениваются операнд каждого выражения — слева направо. Следующие примеры иллюстрируют порядок оценки операторов и операндов:

Оператор

Порядок вычислений

a = b

a, b, =

a = b + c

a, b, c, +, =

a = b + c * d

a, b, c, d, *, +, =

a = b * c + d

a, b, c, *, d, +, =

a = b - c + d

a, b, c, -, d, +, =

a += b -= c

a, b, c, -=, +=