Поделиться через


Оператор логического И: &&

expression && expression

Заметки

Оператор логического И (&&) возвращает логическое значение true, если оба операнда имеют значение true; в противном случае он возвращает значение false. Перед вычислением оба операнда неявно преобразуются в тип bool; результат также имеет тип bool. Логическое И имеет ассоциативность в направлении слева направо.

Операнды оператора логического И не должны быть одинакового типа, но должны быть целочисленного типа или типа указателя. В качестве операндов часто используются реляционные выражения и выражения равенства.

Перед продолжением вычисления выражения логического И полностью вычисляется первый операнд и учитываются все побочные эффекты.

Второй операнд вычисляется только в том случае, если результат вычисления первого операнда — значение true (не нуль). Такое вычисление исключает необязательное вычисление второго операнда, если выражение логического И имеет значение false. Такое сокращенное вычисление можно использовать для предотвращения разыменования пустого указателя, как показано в следующем примере.

char *pch = 0;
...
(pch) && (*pch = 'a');

Если pch имеет значение NULL (0), правая часть выражения никогда не вычисляется. Поэтому присваивание с помощью пустого указателя невозможно.

Ключевое слово оператора &&

Текстовым эквивалентом оператора && является оператор and. Чтобы получить доступ к оператору and в программах, следует включить файл заголовка iso646.h или выполнить компиляцию с параметром компилятора /Za ("Отключить расширения языка").

Пример

// expre_Logical_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate logical AND
#include <iostream>

using namespace std;

int main() {
   int a = 5, b = 10, c = 15;
   cout  << boolalpha
         << "The true expression "
         << "a < b && b < c yields "
         << (a < b && b < c) << endl
         << "The false expression "
         << "a > b && b < c yields "
         << (a > b && b < c) << endl;
}

См. также

Ссылки

Логические операторы

Операторы C++

Операторы C++, приоритет и ассоциативность

Логические операторы в C