逻辑 AND 运算符: &&

语法

logical-and-expression:
equality-expression
logical-and-expression && equality-expression

注解

如果两个作数为true并返回,则逻辑 AND 运算符 (&&true 返回false。 作数在计算前隐式转换为类型 bool ,结果为类型 bool。 逻辑 AND 具有从左到右的关联性。

逻辑 AND 运算符的作数不需要具有相同类型,但它们必须具有布尔值、整型或指针类型。 作数通常是关系表达式或相等表达式。

第一个作数将完全计算,所有副作用在逻辑 AND 表达式的计算继续之前完成。

仅当第一个作数的计算结果为 true (非零) 时,才会计算第二个作数。 当逻辑 AND 表达式为 false时,此计算消除了第二个作数的不必要计算。 可以使用此短路评估来防止 null 指针取消引用,如以下示例所示:

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 逻辑运算符