Выражения
Выражения - это конструкции, составленные из операторов и операндов.
Выражения работают с существующими данными и возвращают новые данные.
В TMT Паскале существуют два типа операций: унарные и бинарные.
Унарные операции работают с одним операндом, а бинарные операции
работают с двумя операндами. Независимо от оператора, операнды могут
быть константами, переменными, данными, возвращенными другим
оператором, или данными, возвращенными вызываемой функцией. Операторы
могут быть сгруппированы согласно типам, на которых они работают.
Есть пять групп операторов:
целые числа, вещественные числа,
логические операторы, множества и операторы отношений.
Здесь представлены группы операторов:
Арифметические операторы
Логические операторы
Операторы множеств
Операторы отношений
Преобразование типов
Приоритет операторов
Арифметические операторы
Список стандартных арифметических операторов представлен ниже:
Оператор Операция
@ Формирование Указателя
+ Унарный плюс
- Унарный минус
+ Сложение
- Вычитание
* Умножение
Div Целое деление
/ Вещественное деление
Mod Остаток от целого деления
And Логическое И
Xor Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ
Not Логическое НЕ
Or Логическое ИЛИ
Shl Сдвиг битов влево
Shr Сдвиг битов вправо
Во время бинарных операций оба операнда должны иметь совместимый тип.
Если операнды имеют совместимый тип, тогда результат операции -
операнд того же типа. Если типы различны, тогда результат - старший
тип.
Для операций с целыми числами операнды преобразуются в тип
Longint,
и результаты имеют тот же самый тип, что и тип операнда, которому присваивается
значение.
Longint или 32-битные операции являются более быстрыми на 80386 и 80486.
Во время операций с вещественными числами, операнды преобразуются в
тип
Extended, и результаты имеют тот же самый тип, что и тип операнда, которому присваивается
значение.
Логические операторы
Логические операторы включают логические И, НЕ, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ.
Операция каждого из них показана ниже:
Оператор Логическая операция
AND Конъюкция
NOT Отрицание
OR Дизъюнкция
XOR Исключающая Дизъюнкция
Логические выражения, которые имеют состояние
True, возвращают
единицу. Логические выражения, которые имеют состояние
False,
возвращают ноль.
Операторы множеств
Операторы множеств:
Оператор Значение Операция
+ Объединение Объединение элементов множеств A и B
- Разность Из множества А удаляются элементы В
* Пересечение Элементы, принадлежащие А и В
Операторы отношений
Операторы отношений выполняют
арифметические, литеральные и
множественные сравнения. Все операции отношений имеют результат
типа
Boolean. Операторы отношений включают:
Оператор Значение Применяемые типы
= Равно integers, reals, booleans,
chars, enumerations, strings,
sets, pointers
< Меньше чем integers, reals, boolean,
char, enumerations, strings,
pointers
> Больше чем integers, reals, boolean,
chars, enumerations, strings,
pointers
<= Меньше или равно, integers, reals, booleans,
включая множества chars, enumerations, strings,
pointers
>= Больше или равно, integers, reals, booleans,
включая множества chars, enumerations, strings,
pointers
<> Не равно integers, reals, booleans,
chars, enumerations, strings,
sets, pointers
In Членство Тип множества справа и тип базового
множества слева
Преобразование типов
Преобразование типов позволяет операнды одного типа преобразовать в
другой тип. Преобразование типов возможно со значениями или
переменными. Преобразование типов на значениях ограничено порядковым
типом и типом указателя. Единственное ограничение на преобразование
типов для переменных - это то, что размеры обоих типов должны быть
одинаковыми. Примеры преобразования типов.
Integer('0')
Boolean(1)
Wordptr(@BuffPtr)
Char(27)
Longint(@BuffPtr)
Приоритет операторов
Для выражений с тремя или более операндами (то есть 2 - 244 / 4),
применяются правила старшинства. Порядок старшинства для операторов
перечислен от самого высокого до самого низкого:
Тип оператора Оператор
Унарные операторы @,Not
Умножение/Деление *,/,Div,Mod,And,Shl,Shr
Сложение +,-,Or,Xor
Операторы сравнения =,<>,<,>,<=,>=,In
Операции выполняются слева направо, в то время как операции более
высокого приоритета выполняются первыми. Например, следующее выражение:
7 + 4 * 2
это не то же самое, что:
(7 + 4) * 2
Так как умножение имеет более высокий приоритет, чем сложение,
умножение выполняется первым, а затем выполняется сложение. Круглые
скобки используются, чтобы отделить операции, которые должны быть
выполнены первыми.