Операции.
Продать или купить б у грузовой автомобиль Volvo FH.
В Object Pascal определены следующие операции:
унарные not, @ ;
мультипликативные *, /, div, mod, and, shi, shr;
аддитивные +, -, or, xor;
отношения =, <>, <, >, <=, >=, in.
Приоритет операций убывает в указанном порядке, т. е. наивысшим приоритетом обладают унарные операции, низшим - операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо. При исчислении логических выражений операции равного приоритета всегда вычисляются слева направо, причем будут вычисляться все или только достаточные операции в зависимости от установленного в среде
Delphi переключателя Project | Options | Compiler | Complete
Boolean eval: при установленном переключателе вычисляются все операции отношения, при неустановленном - только те, что необходимы для однозначного определения результата исчисления.
Правила использования операций с операндами различного типа приводятся в табл. 6.1.
Таблица 6.1
Операция
|
Действие
|
Тип операндов
|
Тип результата
|
not
|
Отрицание
|
Логический
|
Логический
|
not
|
To же
|
Любой целый
|
Тип операнда
|
@
|
Адрес
|
Любой
|
Указатель
|
*
|
Умножение
|
Любой целый
|
Наименьший целый
|
*
|
Тоже
|
Любой вещественный
|
Extended
|
*
|
Пересечение множеств
|
Множественный
|
Множественный
|
/
|
Деление
|
Любой вещественный
|
Extended
|
div
|
Целочисленное деление
|
Любой целый
|
Наименьший целый
|
mod
|
Остаток от деления
|
Тоже
|
- Тоже
|
and
|
Логическое И
|
Логический
|
Логический
|
and
|
То же
|
Любой целый
|
Наименьший целый
|
shl
|
Левый сдвиг
|
Тоже
|
То же
|
shr
|
Правый сдвиг
|
То же
|
То же
|
+
|
Сложение
|
Тоже
|
Тоже
|
+
|
Тоже
|
Любой вещественный
|
Extended
|
+
|
Объединение множеств
|
Множественный
|
Множественный
|
+
|
Сцепление строк
|
Строковый
|
Строковый
|
-
|
Вычитание
|
Любой целый
|
Наименьший целый
|
-
|
Тоже
|
Любой вещественный
|
Extenden
|
or
|
Логическое или
|
Логический
|
Логический
|
or
|
Тоже
|
Любой целый
|
Наименьший целый
|
=
|
Равно
|
Любой простой или строковый
|
Логический
|
0
|
Не равно
|
Тоже
|
Тоже
|
<
|
Меньше
|
Логический
|
Логический
|
<=
|
Меньше или равно
|
Тоже
|
Тоже
|
>
|
Больше
|
То же
|
Тоже
|
>=
|
Больше или равно
|
Тоже
|
Тоже
|
Унарная операция @ применяется к операнду любого типа и возвращает результат типа pointer (см. гл. 9), в котором содержится адрес операнда. Если операция @ применяется к процедуре, функции или методу в объекте, ее результатом будет адрес точки входа в эту процедуру (функцию, метод). Этот адрес можно использовать только в подпрограмме, написанной на Ассемблере, или во фрагментах
INLINE.
В Object Pascal определены следующие логические операции:
not - логическое НЕ;
and - логическое И;
or - логическое ИЛИ;
xor - исключительное ИЛИ.
Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл. 6.2.
Таблица 6.2
Логичеcкие операции над данными целого типа (поразрядно) 5
|
Операнд 1
|
Операнд 2
|
not
|
and
|
or
|
xor
|
1
|
-
|
0
|
-
|
-
|
-
|
0
|
-
|
1
|
-
|
-
|
-
|
0
|
0
|
-
|
0
|
0
|
0
|
0
|
1
|
-
|
0
|
1
|
1
|
1
|
0
|
-
|
0
|
1
|
1
|
1
|
1
|
-
|
1
|
1
|
0
|
К логическим же в Object Pascal обычно относятся и две сдвиговые операции над целыми числами:
i shl j - сдвиг содержимого / на j разрядов влево; освободившиеся младшие разряды заполняются нулями;
i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.
В этих операциях i и у - выражения любого целого типа.
Логические операции над логическими данными дают результат логического типа по правилам, указанным в табл. 6.3.
Таблица 6.3
Логические операции над данными логического типа
|
Операнд 1
|
Операнд 2
|
not
|
and
|
or
|
xor
|
True
|
-
|
False
|
-
|
-
|
-
|
False
|
-
|
True
|
-
|
-
|
-
|
False
|
False
|
-
|
False
|
False
|
False
|
False
|
True
|
-
|
False
|
True
|
True
|
True
|
False
|
-
|
False
|
True
|
True
|
True
|
True
|
-
|
True
|
True
|
False
|
Операция отношения in применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Результат операции будет True, если левый операнд принадлежит множеству. назад - Вперёд
|