Применяются к логическому типу данных, и результат также имеет логический тип. Операция логического отрицания унарная, остальные две - бинарные.
NOT- оператор логического отрицания НЕ:
Not False TRUE Not True FALSE
По этим примерам видно, что в результате выполнения этой операции истинное выражение становится ложным, и наоборот:
Var x, y: integer; X:= 7; Y:= 13; Not (7 > 13) TRUE Not (7 < 13) FALSE
AND - логическая операция И (конъюнкция).
Результат операции тогда и только тогда будет истинным, если истинны одновременно оба операнда:
(7 > 13) and(7 < 13) ^ FALSE
(7 <> 13) and(7 < 13) ^ TRUE
OR- логическая операция ИЛИ (дизъюнкция).
Результат операции будет истинным, если хотя бы один операнд истинен:
(7 > 13) or (7 < 13) ^ TRUE (7 <> 13) or (7 < 13) ^ TRUE
XOR - логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ (исключающая дизъюнкция).
Результат операции тогда и только тогда будет истинным, если один операнд истинен, а второй ложен, во всех остальных случаях результат будет ложным:
(7 > 13) xor (7 < 13) ^ TRUE (7 <> 13) xor(7 < 13) ^ FALSE
В Delphiпо умолчанию логические выражения вычисляются по укороченному способу.
Это значит, что вычисления проводятся до тех пор, пока не станет заведомо известно значение всего выражения, после чего вычисления прекращаются. Например, рассмотрим выражение
(7 > 13) and(7 < 13) ^ FALSE
Значение первого операнда равно FALSE, поэтому и результат вычисления всего операнда равен FALSE, даже если второй операнд истинен. Поэтому значение второго операнда вообще не вычисляется. Этот приём не только сокращает время вычислений, но и помогает избегать ошибок в программе:
If (n <> 0) and (m div n = 10) then m:= m +1;
В данном примере сначала проверяется, не равен ли делитель нулю. Если это так, то дальнейшие вычисления не производятся. Если же используется полное вычисление логического результата (включается директивой компилятора {$в+}), то при делении на ноль возникнет ошибка.