目录
1. 代码示例
示例 1:基础用法
示例 2:条件判断
2. 短路求值(Short-Circuit Evaluation)
代码示例
3. 实际应用场景
场景 1:输入合法性验证
场景 2:游戏状态判断
4. 注意事项
逻辑运算符用于组合或修改布尔表达式(true
/false
)。C++ 中的逻辑运算符包括 &&
(与)、||
(或)、!
(非)。
1. 代码示例
示例 1:基础用法
#include <iostream>
using namespace std;
int main()
{
bool A = true; // 1
bool B = false; // 0
cout << "A && B: " << (A && B) << endl; // 输出 0(false)
cout << "A || B: " << (A || B) << endl; // 输出 1(true)
cout << "!A: " << !A << endl; // 输出 0(false)
cout << "!B: " << !B << endl; // 输出 1(true)
return 0;
}
示例 2:条件判断
int age = 20;
bool hasTicket = true;
if (age >= 18 && hasTicket)
{
cout << "允许进入电影院" << endl; // 条件成立,输出
}
bool isRaining = false;
bool hasUmbrella = false;
if (isRaining || hasUmbrella)
{
cout << "需要带伞" << endl; // 条件不成立,不输出
} else
{
cout << "无需带伞" << endl; // 输出
}
2. 短路求值(Short-Circuit Evaluation)
-
&&
的短路特性:若第一个操作数为false
,直接返回false
,不再计算第二个操作数。 -
||
的短路特性:若第一个操作数为true
,直接返回true
,不再计算第二个操作数。
代码示例
bool checkCondition()
{
cout << "执行了条件检查" << endl;
return true;
}
int main()
{
bool result1 = false && checkCondition(); // 不会调用 checkCondition()
bool result2 = true || checkCondition(); // 不会调用 checkCondition()
return 0;
}
3. 实际应用场景
场景 1:输入合法性验证
string username;
int age;
cout << "输入用户名和年龄:";
cin >> username >> age;
if (!username.empty() && age > 0)
{
cout << "输入有效" << endl;
} else
{
cout << "输入无效" << endl;
}
场景 2:游戏状态判断
bool isPlayerAlive = true;
bool hasAmmo = false;
if (isPlayerAlive && !hasAmmo)
{
cout << "玩家存活但弹药不足!" << endl; // 输出
}
4. 注意事项
-
操作数隐式转换为布尔值:
-
非零值(如
5
、-1
)会被视为true
。 -
零值(
0
)被视为false
。
-
int x = 10, y = 0;
cout << (x && y) << endl; // 输出 0(false)
-
不要混淆
&&
和&
:-
&&
是逻辑与,用于布尔表达式。 -
&
是按位与,用于二进制位操作。
-
int a = 5; // 二进制 0101
int b = 3; // 二进制 0011
cout << (a & b) << endl; // 输出 1(0001)
cout << (a && b) << endl; // 输出 1(true)