Russian Belarusian English German Japanese Ukrainian

Приоритет и ассоциативность операций

CuBook05

В сложных выражениях, содержащих несколько операций, последовательность их выполнения определяется прежде всего приоритетом операций. Имеется 16 уровней приоритета, приведенных ниже в таблице. Некоторые из этих уровней содержат всего по одной операции. Наивысший уровень имеют операции, приведенные в первой строке таблицы, низший в последней. Операции, указанные в одной строке, имеют одинаковый уровень старшинства. Там, где в таблице встречаются дубликаты операций (например, дубликаты имеют операции сложения и вычитания), первая относится к унарной операции, а вторая к бинарной. Если в выражении встречаются записанные подряд операции одного уровня старшинства, то последовательность их выполнения определяется ассоциативностью, которая может быть слева направо или справа налево.
Операция Ассоциативность
() [] -> :: слева направо
! ~ + - ++ -- & * sizeof new delete слева направо
.* -> * слева направо
+ - слева направо
<< >> слева направо
< <= > >= слева направо
== != слева направо
& слева направо
^ слева направо
| слева направо
&& слева направо
|| слева направо
= *= /= %= += -= &= ^= |= <<= >>= слева направо
?: слева направо
,. слева направо
Например, выражение а + b * с / d будет выполняться как а + ((b * с) / d). Сначала выполнятся операции умножения и деления, имеющие более высокий приоритет, чем операция сложения. Поскольку ассоциативность операций умножения и деления слева направо, то прежде всего будет выполнено умножения b * с, а затем результат разделится на с. В заключение результат этого деления прибавится к а.
 
Вы можете легко изменять последовательность действий, применяя скобки, которые имеют очень высокий приоритет.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Защитный код Обновить