Логический оператор AND: &&
Синтаксис
logical-and-expression
:
equality-expression
logical-and-expression
&&
equality-expression
Замечания
Логический оператор AND (&&
) возвращается true
, если оба операнда являются и возвращаются true
false
в противном случае. Операнды неявно преобразуются в тип bool
перед оценкой, а результат — тип bool
. Логическое И имеет ассоциативность в направлении слева направо.
Операнды для логического оператора AND не должны иметь один и тот же тип, но они должны иметь логический, целочисленный или указательный тип. В качестве операндов часто используются реляционные выражения и выражения равенства.
Первый операнд полностью вычисляется, и все побочные эффекты завершаются до того, как оценка логического выражения AND продолжается.
Второй операнд оценивается только в том случае, если первый операнда оценивается true
(ненулево). Эта оценка устраняет отсутствие необходимости в оценке второго операнда при использовании false
логического выражения AND. Такое сокращенное вычисление можно использовать для предотвращения разыменования пустого указателя, как показано в следующем примере.
char *pch = 0;
// ...
(pch) && (*pch = 'a');
Если pch
имеет значение NULL (0), правая часть выражения никогда не вычисляется. Это кратковременное вычисление делает назначение с помощью указателя NULL невозможным.
Оператор ключевое слово для&&
C++ указывает and
в качестве альтернативной орфографии для &&
. В C альтернативная орфография предоставляется в виде макроса в заголовке <iso646.h> . В C++альтернативная орфография является ключевое слово; <использование iso646.h> или эквивалентное <C++ ciso646> не рекомендуется. В Microsoft C++ /permissive-
параметр или /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
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по