Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 46 стр.

UptoLike

Составители: 

46
Когда выражение содержит несколько разных операций, то поря-
док выполнения определяется на основе приоритетов операций, а если
операции одинаковые, то порядок их выполнения задается их ассоциа-
тивностью (табл. 3.3).
Таблица 3.3.
Приоритеты и ассоциативность операций языка C#
При-
ори-
тет
Категория
Операции
Ассоциа-
тивность
0
Первичные
(expr) x.y f(x) a[x] x++
x-- new sizeof(t)
typeof(t) checked(expr)
unchecked(expr)
Слева направо
1
Унарные
+ - ! ~ ++x --x (T)x
Слева направо
2
Мультипликативные
(Умножение)
* / %
Слева направо
3
Аддитивные (Сложение)
+ -
Слева направо
4
Сдвиг
<< >>
Слева направо
5
Отношения, проверка ти-
пов
< > <= >= is as
Слева направо
6
Эквивалентность
== !=
Слева направо
7
Логическое
&
Слева направо
8
Логическое исключаю-
щее ИЛИ (XOR)
^
Слева направо
9
Логическое ИЛИ (OR)
|
Слева направо
10
Условное И
&&
Слева направо
11
Условное ИЛИ
||
Слева направо
12
Условное выражение
? :
Справа налево
13
Присваивание
= *= /= %= += -= <<= >>=
&= ^= |=
Справа налево
Вычисление выражений начинается с выполнения операций выс-
шего приоритета. Первым делом вычисляются выражения в круглых
скобках (expr), определяются значения полей объекта x.y, вычис-
ляются функции – f(x), переменные с индексами – a[i].
Если есть несколько операций с одинаковым приоритетом, то они
вычисляются в соответствии с их ассоциативностью. Операции с левой
ассоциативностью вычисляются слева направо. Например, x * y / z
вычисляется как (x*y)/z. Операции с правой ассоциативностью вы-
числяются справа налево. Операции присваивания и тернарная опера-