Операции
В Турбо Паскале определены следующие операции:
- унарные 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 | Тоже | Любой целый | Наименьший целый |
= | Равно | Любой простой или строковый | Логический |
<> | Не равно | То же | То же |
< | Меньше | Логический | Логический |
<= | Меньше или равно | То же | То же |
> | Больше | То же | То же |
>= | Больше или равно | То же | То же |