На этом шаге мы рассмотрим правила выполнения логических операций.
Булевские операции выполняются по правилам булевой алгебры, которые показаны ниже:
Операнды | Операции | ||||
---|---|---|---|---|---|
A | B | not A | A and B | A or B | A xor B |
False | False | True | False | False | False |
False | True | True | False | True | True |
True | False | False | False | True | True |
True | True | False | True | True | False |
В Object Pascal также, как и в Borland Pascal, при выполнении булевских операций в логических выражениях поддерживаются две различные модели генерации кода:
При использовании полной схемы всегда вычисляются все операнды и выполняются все операции выражения, даже если его результат будет известен уже после первой операции.
При использовании короткой схемы вычисление операндов результатов операций выполняется строго слева направо и прекращается, как только выполнение дальнейших действий перестанет оказывать влияние на конечный результат всего выражения.
Управление моделью вычисления осуществляется с помощи директивы компилятора $В. По умолчанию установлено значение{$В-}, которое соответствует короткой схеме вычислений.
Сведем все сказанное в таблицу:
Операция | Действие | Тип операндов | Тип результата |
---|---|---|---|
Унарные | |||
not | Логическое отрицание | Булевский | Булевский |
Бинарные | |||
and | Логическое И | Булевский | Булевский |
or | Логическое ИЛИ | Булевский | Булевский |
xor | Логическое исключающее ИЛИ | Булевский | Булевский |
На следующем шаге мы остановимся на поразрядных логических операциях и операциях сдвига.