Выражения состоят из операций и операндов. Большинство опе-
раций в языке Паскаль являются бинарными, то есть содержат два
операнда. Остальные операции являются унарными и содержат только
один операнд. В бинарных операциях используется обычное алгебраи-
ческое представление, например: a+b. В унарных операциях операция
всегда предшествует операнду, например: -b.
В более сложных выражениях порядок, в котором выполняются
операции, соответствует приоритету операций (см. Таблицу 6.1).
Старшинство операций Таблица 6.1
┌────────────────────┬─────────────────────┬────────────────────┐
│ Операция │ Приоритет │ Вид операции │
├────────────────────┼─────────────────────┼────────────────────┤
│ @, not │ первый (высший) │ унарная операция │
├────────────────────┼─────────────────────┼────────────────────┤
│ *, /, div, mod, │ второй │ операция умножения,│
│ and, shl, shr │ │ деления, сдвига... │
├────────────────────┼─────────────────────┼────────────────────┤
│ +, -, or, xor │ третий │ операция сложения │
├────────────────────┼─────────────────────┼────────────────────┤
│ =, <>, <, >, │ четвертый (низший) │ операция отношения │
│ <=, >=, in │ │ │
└────────────────────┴─────────────────────┴────────────────────┘
Для определении старшинства операций имеется три основных
правила:
1. Во-первых, операнд, находящийся между двумя операциями с
различными приоритетами, связывается с операцией, имею-
щей более высокий приоритет.
2. Во-вторых, операция, находящаяся между двумя операциями
с равными приоритетами, связывается с той операцией, ко-
торая находится слева от него.
3. В-третьих, выражение, заключенное в скобки, перед выпол-
нением вычисляется, как отдельный операнд.
Операции с равным приоритетом обычно выполняются слева-нап-
раво, хотя иногда компилятор при генерации оптимального кода мо-
жет переупорядочить операнды.