4.1 关系运算符与bool类型
正在加载视频播放器…
GESP C++ 一级:关系运算符与 bool 类型精讲
核心目标:掌握 6 个关系运算符,理解关系表达式的值是
bool类型,会用true/false,能正确与if结合,避开=与==、连写比较等常见错误。
关系运算符用来比较,结果是bool;true就是 1,false就是 0,但输出true/false要用boolalpha。
一、什么是关系运算符
关系运算符用于比较两个值的大小或相等关系。
C++ 一级必须掌握的 6 个关系运算符:
| 运算符 | 名称 | 示例 | 含义 |
|---|---|---|---|
> |
大于 | a > b |
a 是否大于 b |
< |
小于 | a < b |
a 是否小于 b |
>= |
大于等于 | a >= b |
a 是否大于或等于 b |
<= |
小于等于 | a <= b |
a 是否小于或等于 b |
== |
等于 | a == b |
a 是否等于 b |
!= |
不等于 | a != b |
a 是否不等于 b |
注意:
>=不能写成=>,<=不能写成=<。
==是两个等号,表示判断相等;=是一个等号,表示赋值。
二、关系表达式的结果:bool 类型
关系表达式的结果只有两种:
true:成立,真false:不成立,假
例如:
5 > 3 // true
5 < 3 // false
5 == 5 // true
5 != 5 // false
在 C++ 中:
true 相当于 1
false 相当于 0
所以:
cout << (5 > 3) << endl; // 输出 1
cout << (5 < 3) << endl; // 输出 0
考试提示:
cout直接输出关系表达式时,必须加括号。
因为<<优先级高于关系运算符。cout << (a > b); // 正确 cout << a > b; // 错误,会被理解为 (cout << a) > b
三、bool 类型详解
1. bool 是什么
bool 是布尔类型,只有两个值:
true // 真
false // 假
声明布尔变量:
bool flag = true;
bool isEven = false;
2. bool 与整数的关系
true转为整数是1false转为整数是0- 非零整数转为
bool是true - 零转为
bool是false
示例:
bool a = 5; // a = true
bool b = 0; // b = false
int x = true; // x = 1
int y = false; // y = 0
3. bool 的输出
默认输出:
bool flag = true;
cout << flag << endl; // 输出 1
使用 boolalpha 输出 true/false:
cout << boolalpha << flag << endl; // 输出 true
也可以关闭:
cout << noboolalpha << flag << endl; // 又输出 1
4. bool 的输入
bool flag;
cin >> flag;
通常输入 0 或 1:
- 输入
0→false - 输入
1→true - 输入非零整数 →
true
一级考试中,bool 输入了解即可,重点在关系表达式和 if 判断。
四、关系运算符与 if 结合
关系运算符最常用于 if 条件。
1. 基本用法
int a = 5, b = 3;
if (a > b) {
cout << "a 大于 b" << endl;
}
2. if-else
int a, b;
cin >> a >> b;
if (a == b) {
cout << "相等" << endl;
} else {
cout << "不相等" << endl;
}
3. 判断奇偶
int n;
cin >> n;
if (n % 2 == 0) {
cout << "偶数" << endl;
} else {
cout << "奇数" << endl;
}
4. 判断范围
int score;
cin >> score;
if (score >= 60 && score <= 100) {
cout << "及格" << endl;
}
这里用到了逻辑与 &&,一级也会接触。
5. 字符比较
字符按 ASCII 码比较:
char c;
cin >> c;
if (c >= 'a' && c <= 'z') {
cout << "小写字母" << endl;
}
五、关系运算符的优先级与结合性
1. 优先级从高到低
算术运算符:+ - * / %
关系运算符:< <= > >=
关系运算符:== !=
逻辑与:&&
逻辑或:||
赋值:=
记忆:
先算算术,再比大小,再看相等,最后逻辑和赋值。
2. 示例
int a = 2, b = 3, c = 4;
cout << (a + b > c) << endl; // 先算 a+b=5,5>4,输出 1
cout << (a > b == false) << endl;
// 先算 a > b 得 false(0),再算 0 == false,输出 1
不建议写太复杂,建议加括号。
3. 结合性
关系运算符是左结合,但不要连写比较。
错误写法:
if (0 < a < 10) // 错误逻辑
正确写法:
if (a > 0 && a < 10) // 正确
六、常见比较模型
1. 判断相等
if (a == b) {
cout << "相等";
}
2. 判断不相等
if (a != b) {
cout << "不相等";
}
3. 判断大于
if (a > b) {
cout << "a 更大";
}
4. 判断小于等于
if (a <= b) {
cout << "a 不大于 b";
}
5. 求最大值
int a, b;
cin >> a >> b;
if (a > b) {
cout << a << endl;
} else {
cout << b << endl;
}
6. 判断闰年
int y;
cin >> y;
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
cout << "闰年";
} else {
cout << "平年";
}
七、常见错误
-
=与==混淆if (a = 1) // 这是赋值,不是比较,条件恒为真 if (a == 1) // 正确 -
>=写成=>if (a => b) // 错误 if (a >= b) // 正确 -
关系表达式连写
if (0 < a < 10) // 错误逻辑 if (a > 0 && a < 10) // 正确 -
输出关系表达式忘记加括号
cout << a > b; // 错误 cout << (a > b); // 正确 -
浮点数直接用
==比较double a = 0.1 + 0.2; if (a == 0.3) { } // 可能不成立一级了解,尽量避免。
-
bool输出格式不符合题目要求
题目要求输出true/false时要用:cout << boolalpha << flag; -
字符比较忘记 ASCII 规律
'A' < 'a' // true,因为 65 < 97 -
把
!和!=混淆!flag // 逻辑非,取反 a != b // 判断不等于
八、阅读程序写结果
题目 1
cout << (5 > 3) << endl;
输出:
1
题目 2
cout << (5 < 3) << endl;
输出:
0
题目 3
cout << boolalpha << (5 > 3) << endl;
输出:
true
题目 4
int a = 3, b = 5;
cout << (a == b) << endl;
输出:
0
题目 5
int a = 3, b = 5;
cout << (a != b) << endl;
输出:
1
题目 6
int a = 3, b = 5;
bool f = a < b;
cout << f << endl;
输出:
1
题目 7
char c = 'A';
cout << (c == 'A') << endl;
输出:
1
题目 8
cout << (1 < 2 < 3) << endl;
输出:
1
解释:1 < 2 得 true,即 1,再算 1 < 3 得 true,输出 1。
但这是错误逻辑写法,不要模仿。
题目 9
cout << (3 < 2 < 1) << endl;
输出:
1
解释:3 < 2 得 false,即 0,再算 0 < 1 得 true,输出 1。
再次说明不能连写比较。
九、速查表
| 需求 | 写法 |
|---|---|
| 大于 | a > b |
| 小于 | a < b |
| 大于等于 | a >= b |
| 小于等于 | a <= b |
| 等于 | a == b |
| 不等于 | a != b |
| 定义布尔变量 | bool flag = true; |
| 输出布尔值 1/0 | cout << flag; |
| 输出 true/false | cout << boolalpha << flag; |
| 判断相等 | if (a == b) |
| 判断不相等 | if (a != b) |
| 判断范围 | if (a > 0 && a < 10) |
| 判断奇偶 | if (n % 2 == 0) |
| 判断闰年 | if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) |
十、总结
关系运算符与 bool 类型是一级考试中“分支结构”的基础。
- 关系运算符有 6 个:
>、<、>=、<=、==、!=。 - 关系表达式的结果是
bool,只有true和false。 true默认输出1,false默认输出0;要输出true/false用boolalpha。==是判断相等,=是赋值,千万不要混淆。- 范围判断不能连写,要用
&&连接,如a > 0 && a < 10。 - 输出关系表达式结果时要加括号,如
cout << (a > b);。
复习时多练“阅读程序写结果”和“if 条件判断”两类题,重点注意 == 与 =、连写比较、括号和 boolalpha。考试中先看清是比较还是赋值,再判断结果真假,最后按格式输出。