关系运算符:像裁判一样比较大小
中等38关系运算符:像裁判一样比较大小
在我们写程序的时候,经常需要判断两个数谁大谁小,或者它们是否相等。比如:考试成绩有没有及格?零花钱是不是比同学多?公交车上的人数有没有超载?这些判断就像体育比赛里的裁判——裁判只看结果是对还是错,而计算机给出的结果也只有两个:真(true)或者假(false)。C++中我们用 true 表示真,false 表示假,程序会根据这些结果决定接下来做什么。
常用的关系运算符
C++里一共有6个关系运算符,它们就像我们数学课上学过的比较符号,只是写法上有一点点不同:
| 运算符 | 含义 | 例子 | 结果(假设 a=5, b=3) |
|---|---|---|---|
== | 等于 | a == b | false(假) |
!= | 不等于 | a != b | true(真) |
> | 大于 | a > b | true(真) |
< | 小于 | a < b | false(假) |
>= | 大于或等于 | a >= b | true(真) |
<= | 小于或等于 | a <= b | false(假) |
注意:== 是两个等号,千万别写成单个等号 = 哦!单个等号是赋值用的,比如 a = 5 是把5放进变量a里,而 a == 5 是问“a的值是否等于5”,这是完全不同的两件事。
生活中的例子
- 零花钱比较:你每天有10元零花钱,同桌有8元。
你的钱 > 同桌的钱的结果是true(真),说明你比同桌多。 - 排队人数:你们班排队打饭,队伍有15人,食堂阿姨说“剩下8份饭”。用
排队人数 > 剩余份数比较,结果是true,说明有的同学可能吃不上饭了。 - 年龄判断:你今年9岁,弟弟7岁。
你的年龄 == 弟弟的年龄的结果是false(假),因为你们年纪不一样。
比较结果:真与假(布尔值)
关系运算的结果只有两种:true(真)或 false(假)。在C++中,true 默认用数字 1 表示,false 默认用数字 0 表示。当你用 cout 输出比较结果时,屏幕上会显示1或0,而不是单词 true/false。
例如:
cout << (5 > 3) << endl; // 输出 1(真)
cout << (5 == 3) << endl; // 输出 0(假)
你可以把 true 和 false 当作一种特殊的数字:1代表“是”,0代表“否”。
新手最容易犯的错误
错误1:把 == 写成 =
这是同学们最常掉进去的坑!比如想判断变量 score 是否等于100,应该写:
if (score == 100) { ... } // 正确:比较
但是有人会写成:
if (score = 100) { ... } // 错误:这是赋值!score变成100,而且条件永远为真
这样的代码不会报错,但逻辑完全错了,程序会一直认为“score等于100”,实际上你把它赋值成了100。所以一定要记住:比较用双等号,赋值用单等号。
错误2:弄混 >= 和 =>、<= 和 =<
符号的顺序不能颠倒,必须是先写大于号/小于号,再写等号。=> 是错误的写法,C++不认识它。
错误3:忘记加括号
有时我们会在 cout 里直接输出比较结果:
cout << "5 > 3 的结果是:" << 5 > 3 << endl; // 错误:<< 优先级比 > 高,程序会出错
正确的做法是用括号括起来:
cout << "5 > 3 的结果是:" << (5 > 3) << endl; // 正确
关系运算符的常用场景:if判断
关系运算符最常和 if 语句一起使用,让程序根据条件做出不同的反应。比如:
- 如果考试成绩 >= 90 分,奖励冰激凌;
- 如果钱包里的钱 >= 商品价格,就可以买;
- 如果游戏得分 > 最高分,就更新排行榜。
下面是一个简单的例子:
#include <iostream>
using namespace std;
int main() {
int score = 85; // 考试成绩
int passLine = 60; // 及格线
// 用关系运算符比较分数和及格线
cout << "分数是否及格?" << endl;
cout << "score == passLine: " << (score == passLine) << endl; // 0 (假)
cout << "score != passLine: " << (score != passLine) << endl; // 1 (真)
cout << "score > passLine: " << (score > passLine) << endl; // 1 (真)
cout << "score < passLine: " << (score < passLine) << endl; // 0 (假)
cout << "score >= passLine: " << (score >= passLine) << endl; // 1 (真)
cout << "score <= passLine: " << (score <= passLine) << endl; // 0 (假)
// 在if语句中使用关系运算符
if (score >= 90) {
cout << "优秀!奖励一个大冰激凌!" << endl;
} else {
cout << "继续努力哦!" << endl;
}
return 0;
}
运行这个程序,你会看到每个比较的结果:1代表真,0代表假。当前 score 是85,不满足 >= 90,所以输出“继续努力哦!”。试着把 score 改成95再运行,结果就会变成“优秀!奖励一个大冰激凌!”。
完整示例:零花钱PK
让我们再写一个完整的例子,用关系运算符来比较你和好朋友的零花钱,看看谁更多:
#include <iostream>
using namespace std;
int main() {
int myMoney = 20; // 我的零花钱,单位:元
int friendMoney = 15; // 朋友的零花钱,单位:元
cout << "我的零花钱:" << myMoney << "元" << endl;
cout << "朋友的零花钱:" << friendMoney << "元" << endl;
// 比较谁多
cout << "我是否比朋友多?" << (myMoney > friendMoney) << endl; // 1 (真)
cout << "我是否比朋友少?" << (myMoney < friendMoney) << endl; // 0 (假)
cout << "我们是否一样多?" << (myMoney == friendMoney) << endl; // 0 (假)
// 如果我的钱大于等于朋友的钱,我请他吃零食;否则他请我
if (myMoney >= friendMoney) {
cout << "哈哈哈,我的钱更多或相等,今天我请你吃零食!" << endl;
} else {
cout << "好吧,你的钱更多,轮到你请客啦!" << endl;
}
return 0;
}
运行结果:
我的零花钱:20元
朋友的零花钱:15元
我是否比朋友多?1
我是否比朋友少?0
我们是否一样多?0
哈哈哈,我的钱更多或相等,今天我请你吃零食!
改变 myMoney 或 friendMoney 的值,看看条件判断的结果如何变化。
相关知识点指引
学会了关系运算符,你就可以进一步学习:
- 逻辑运算符:
&&(与)、||(或)、!(非),用来组合多个条件,比如“考试成绩大于90并且作业完成”。 - if-else 语句:更复杂的条件分支,比如多个
else if判断不同分数段。 - 条件运算符:
? :可以一行写出“如果...就...否则...”的效果。 - 循环中的条件:
for、while循环用关系运算符控制循环是否继续。
关系运算符是所有条件判断的基础,掌握它们,你的程序就能像真正的裁判一样,根据不同的情况做出正确的反应!快打开编译器试试吧!
例题精讲
在C++中,表达式 3 > 2 的值是什么?
下列哪个关系运算符在C++中表示“不等于”?
表达式 (5 == 5) 在C++中的结果是 true。
补全以下代码,使程序输出两个整数比较的布尔结果。\nint a = 10, b = 20;\ncout << (a ___ b);补全以下代码,判断变量x是否大于等于y,并将结果输出。\nint x = 15, y = 10;\nbool result = x ___ y;\ncout << result;