Оператор логического И: &&
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;
}