Лекция: Сложные логические выражения
Операциями над логическими данными в выражениях Си являются:
• отрицание (другое название–не), знак операции!(восклицательный знак),
• конъюнкция (другие названия–логическое произведение или простоИ), знак опе-
рации &&,
• дизъюнкция (другие названия–логическая сумма или простоИЛИ), знак операции
||,
Отрицание является унарной операцией, остальные – бинарными.
В математике операции !(отрицания) соответствует знак перед аргументом
(Х) или черта над аргументом ( X ); конъюнкции соответствует знак & или или ∧ (X&Y или XY или X∧Y ); дизъюнкции соответствует знак V (X V Y ).
Ниже представлены их таблицы перечисленных логических функций.
X!X | X | Y X && Y | X | Y X || Y | ||
Ложь Истина | Ложь | Ложь | Ложь | Ложь | Ложь | Ложь |
Истина Ложь | Истина Ложь | Ложь | Истина Ложь | Истина | ||
Ложь Истина | Ложь | Ложь ИстинаИстина | ||||
ИстинаИстина Истина | ИстинаИстинаИстина |
Логические выражения могут содержать отношения выражений(в частности кон-стант, переменных, обращений к функциям) различных типов, разделенные знаками ло-гических операций и круглыми скобками. В первую очередь вычисляёются выражения в скобках и обращения к функциям, затем – отношения и уже после них – логические опе-рации в соответствии с их приоритетами. Операция отрицание имеет наивысший при-оритет и выполняется в порядке справа налево. Приоритет опрации конъюнкция выше, чем у операции дизъюнкция, а последовательности этих операций выполняются в поряд-ке слева направо.
Пример. Составить условный оператор для вычисления нового значения Y по фор-
муле
Y =
A,B,
Y
если (A ⋅B >1) & (A >0),если (A +B >1) & (A <0),
− в стальных случаях
«Практикум по программированию на языке C в среде VS C++»
Как видно из задания, при истинности одного из условий другие условия будут иметь значение «ложь», поэтому для вычисления лучше использовать не два, а один условный оператор if else (с вложенным в него другим оператором if), что приведет к сокра-щению вычислений:
if (A*B>1 && A>0) Y=A;
else
if (A+B>1 && A<0) Y=B;
Скобки можно использовать не только для изменения порядка вычислений в логи-ческих выражениях, но и для повышения их наглядности (например, отношения, входя-щие в сложные логические выражения, можно заключить в скобки).
Условное выражение (тернарный оператор)
Конструкцию условного выражения описывает синтаксическая диаграмма