// устарело и отсутствует в справке
Любое выражение имеет определенный тип и после вычисления возвращает некоторое значение. Простейшими выражениями являются переменные и константы. Более сложные выражения строятся из более простых с использованием операций, скобок, вызовов функций, индексов и приведений типов. Данные, к которым применяются операции, называются операндами.В Pascal ABC имеются следующие операции: @, not, ^, *, /, div, mod, and, shl, shr, +, -, or, xor,
in, =>, =, >, <, <>, <= и >=.
К арифметическим относятся бинарные операции
+ - * / для вещественных и целых чисел, бинарные операции
div и mod для целых чисел и унарные операции
+ и - для вещественных и целых чисел. Выражение,
имеющее числовой тип, называется арифметическим. Тип арифметического выражения определяется по следующему правилу: если все операнды целые и в выражении отсутствует операция деления
/, то выражение имеет тип integer, в противном случае выражение имеет тип real. Например, если b имеет тип byte,
c имеет тип 1..9, то
b+c и -b имеют тип integer, а 2.0+b и 1/2 - тип real.
К
логическим относятся бинарные операции and, or и xor, а также унарная
операция not,
имеющие операнды
типа boolean и возвращающие значение типа
boolean. Выражение, имеющее тип
boolean, называется логическим.
Операции отношения
<, >, <=, >=, =, <> возвращают значение типа boolean и применяются к операндам
целого, вещественного, символьного, логического и строкового типов, а также к
типизированным указателям. Операции = и <> также применяются к операндам типа pointer, к операндам,
являющихся объектами классов и к константе nil. При сравнении
символа и строки символ преобразуется в строку длины 1.
Побитовые операции and, or, not,
xor, shl, shr
производят побитовые манипуляции с операндами целого типа. Для унарной операции
not результат имеет тот же тип, что и операнд. Для остальных операций результат имеет
тип integer.
Например, если b имеет тип
byte и
b=1, то b shl 10=1024, а not b=254.
Помимо операций отношения <, >, <=, >=, =, <>, к строковым и символьным операндам применима операция
конкатенации (слияния) +. Ее результат имеет строковый тип.
Например, 'a'+'b'='ab'.
Операция @
применяется к переменной и возвращает ее адрес.
К типизированным указателям применима операция разыменования ^:
если p является указателем на тип T,
то p^ - элемент типа T, на
который указывает p.
К множествам применимы
операции + (объединение), -
(разность) и * (пересечение):
var
s1,s2,s: set of byte;
begin
s1:=[1..4];
s2:=[2..5];
s:=s1+s2; // s=[1..5]
s:=s1-s2; // s=[1]
s:=s1*s2; // s=[2..4]
К множествам применимы также операции отношения = (равенство), <>
(неравенство), <= (вложено) и
>= (содержит):
var
s1,s2,s: set of byte;
b: boolean;
begin
s1:=[1..4];
s2:=[2..5];
s:=[1,2];
b:=s1=s2; // b=False
b:=s2<>s; // b=True
b:=s<=s2; // b=False
b:=s1>=s; // b=True
Наконец, операция in
определяет, принадлежит ли элемент множеству:
1 in [2..5] // False
3 in [2..5] // True
Приоритет определяет порядок выполнения операций в выражении. Первыми выполняются операции, имеющие высший приоритет. Операции, имеющие одинаковый приоритет, выполняются слева направо.
Таблица приоритетов операций
@,
not,
^
|
1 (наивысший) |
*,
/,
div,
mod,
and,
shl,
shr |
2 |
+,
-,
or,
xor |
3 |
=,
<>,
<,
>,
<=,
>=,
in,
=>
|
4 (низший) |