- бинарная операция логическое И – && (конъюнкция);
- бинарная операция логическое ИЛИ –||(дизъюнкция).
Операнды логических операций могут быть целых, плавающих и некоторых других типов, при этом в каждой операции могут участвовать операнды различных типов.
Операнды логических выражений вычисляются слева направо. Результатом логической операции является логическое значение true или false.
Операция отрицания !операнд возвращает false, если операнд равен true (т.е. любое значение, отличное от нуля) и true если операнд равен false (ноль).
Операция && (И-логическое, логическое умножение) возвращает true, если оба операнда истинны (равны true). Если один из операндов ложен, то результатом будет ложь (false).
Операция || (ИЛИ-логическое, логическое сложение) возвращает false, только если оба её операнда равны false. Если какой-нибудь из операндов имеет ненулевое значение, то результат операции равен true.
По приоритету эти операции распределены так: !, &&, ||.
Логические операторы И и ИЛИ по умолчанию используют так называемое сокращенное вычисление логических выражений: если значения уже вычисленной части выражения достаточно для определения результата всего выражения, вычисление этого выражения прекращается.
То есть если в операторе И (&&) первый операнд ложен, то значение всего выражение в любом случае ложно и второй операнд не обрабатывается. Аналогично для оператора ИЛИ (||): если первый операнд равен true, значение всего выражения также равно истине и второй операнд не учитывается.
Вот несколько примеров использования логических операций:
i > 50 && j == 24 || k+3 < 30
value1 <= value2 && (value3 > 50 || value4 < 20)
x != 0 && y/x > 1 // если x равен 0, то второй операнд не вычисляется и
// деления на 0 не будет
!(a < x && x > b)
Предостережение!В последнем условии реализована проверка на попадание x в диапазон от a до b (a < x && x > b), которая в математике записывается следующим образом: a<x<b. Такой короткий и удобный математический способ записи неприменим в C++. Компилятор не найдет в нём ошибок, но работать такое выражение будет совсем не так, как задумано.