Учись программированию на C++ Builder бесплатно!

В сложных выражениях, содержащих несколько операций, последовательность их выполнения определяется прежде всего приоритетом операций. Имеется 16 уровней приоритета. Некоторые из этих уровней содержат всего по одной операции. Наивысший уровень имеют операции, приведенные в первой строке таблицы, низший в последней. Операции, указанные в одной строке, имеют одинаковый уровень старшинства. Там, где в таблице встречаются дубликаты операций (например, дубликаты имеют операции сложения и вычитания), первая относится к унарной операции, а вторая к бинарной. Если в выражении встречаются записанные подряд операции одного уровня старшинства, то последовательность их выполнения определяется ассоциативностью, которая может быть слева направо или справа налево.

Приоритет Операция Ассоциативность
1 () [] -> :: слева направо
2 ! ~ + - ++ -- & * sizeof new delete слева направо
3 .* -> * слева направо
4 + - слева направо
5 << >> слева направо
6 < <= > >= слева направо
7 == != слева направо
8 & слева направо
9 ^ слева направо
10 | слева направо
11 && слева направо
12 || слева направо
13 = *= /= %= += -= &= ^= |= <<= >>= слева направо
14 ?: слева направо
15 ,. слева направо

Например, выражение

а + b * с / d

будет выполняться как

а + ((b * с) / d)

Сначала выполнятся операции умножения и деления, имеющие более высокий приоритет, чем операция сложения. Поскольку ассоциативность операций умножения и деления слева направо, то прежде всего будет выполнено умножения b * с, а затем результат разделится на с. В заключение результат этого деления прибавится к а.

Можно легко изменять последовательность действий, применяя скобки, которые имеют очень высокий приоритет.

Поделиться