Операции
В Турбо Паскале определены следующие операции:
- унарные not, @;
- мультипликативные *, /, div, mod, and, shl, shr;
- аддитивные +, -, or, xor;
- отношения =, <>, <, >, <=, >=, in.
Приоритет операций убывает в указанном порядке, т.е. наивысшим приоритетом обладают унарные операции, низшим – операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо. При исчислении логических выражений операции равного приоритета всегда вычисляются слева направо, причем будут вычисляться все или только достаточные операции в зависимости от установленной в среде Турбо Паскаля опции OPTIONS/COMPILER/ COMPLETE BOOLEAN EVAL: при установленном значении этой опции вычисляются все операции отношения, при не установленном – только те, которые достаточны для получения результата.
Это обстоятельство необходимо учитывать при использовании операций отношения с функциями, в которых изменяются глобальные переменные или параметры, передаваемые по имени, например:
Function AddI(var x: Integer): Integer;
begin {AddI}
inc(x);
AddI: = x end {AddI};
var
a,b: Integer;
begin {main}
if (a > b) or (Addl (a) > 100) then b: = a;
…….
При выполнении этого фрагмента значение переменной А будет зависеть от настройки опции: если опция активизирована, значение А всегда наращивается на 1, если не активизирована – только в случае А <= В.
Правила использования операций с операндами различного типа приводятся в табл. 3.1.
Таблица 3.1.
| Операция | Действие | Тип операндов | Тип результата |
|---|---|---|---|
| not | Отрицание | Логический | Логический |
| not | То же | Любой целый | Тип операнда |
| @ | Адрес | Любой | Указатель |
| * | Умножение | Любой целый | Наименьший целый |
| * | То же | Любой вещественный | Exended |
| * | Пересечение множеств | Множественный | Множественный |
| / | Деление | Любой вещественный | Extended |
| div | Целочисленное деление | Любой целый | Наименьший целый |
| mod | Остаток от деления | То же | То же |
| and | Логическое И | Логический | Логический |
| and | То же | Любой целый | Наименьший целый |
| shl | Левый сдвиг | То же | То же |
| shr | Правый сдвиг | То же | То же |
| + | Сложение | То же | То же |
| + | То же | Любой вещественный | Extended |
| + | Объединение множеств | Множественный | Множественный |
| + | Сцепление строк | Строковый | Строковый |
| - | Вычитание | Любой целый | Наименьший целый |
| - | То же | Любой вещественный | Extenden |
| or | Логическое ИЛИ | Логический | Логический |
| or | Тоже | Любой целый | Наименьший целый |
| = | Равно | Любой простой или строковый | Логический |
| <> | Не равно | То же | То же |
| < | Меньше | Логический | Логический |
| <= | Меньше или равно | То же | То же |
| > | Больше | То же | То же |
| >= | Больше или равно | То же | То же |
