CC++ & Algorithm

关系运算符:像裁判一样比较大小

中等38
语言版本:C++Python
概述:关系运算符用来比较两个值的大小或是否相等,结果只有“真”或“假”。

关系运算符:像裁判一样比较大小

在我们写程序的时候,经常需要判断两个数谁大谁小,或者它们是否相等。比如:考试成绩有没有及格?零花钱是不是比同学多?公交车上的人数有没有超载?这些判断就像体育比赛里的裁判——裁判只看结果是对还是错,而计算机给出的结果也只有两个:(true)或者(false)。C++中我们用 true 表示真,false 表示假,程序会根据这些结果决定接下来做什么。

常用的关系运算符

C++里一共有6个关系运算符,它们就像我们数学课上学过的比较符号,只是写法上有一点点不同:

运算符含义例子结果(假设 a=5, b=3)
==等于a == bfalse(假)
!=不等于a != btrue(真)
>大于a > btrue(真)
<小于a < bfalse(假)
>=大于或等于a >= btrue(真)
<=小于或等于a <= bfalse(假)

注意== 是两个等号,千万别写成单个等号 = 哦!单个等号是赋值用的,比如 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(假)

你可以把 truefalse 当作一种特殊的数字: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
哈哈哈,我的钱更多或相等,今天我请你吃零食!

改变 myMoneyfriendMoney 的值,看看条件判断的结果如何变化。

相关知识点指引

学会了关系运算符,你就可以进一步学习:

  • 逻辑运算符&&(与)、||(或)、!(非),用来组合多个条件,比如“考试成绩大于90并且作业完成”。
  • if-else 语句:更复杂的条件分支,比如多个 else if 判断不同分数段。
  • 条件运算符? : 可以一行写出“如果...就...否则...”的效果。
  • 循环中的条件forwhile 循环用关系运算符控制循环是否继续。

关系运算符是所有条件判断的基础,掌握它们,你的程序就能像真正的裁判一样,根据不同的情况做出正确的反应!快打开编译器试试吧!

例题精讲

1单选题

在C++中,表达式 3 > 2 的值是什么?

Atrue
Bfalse
C1
D2
2单选题

下列哪个关系运算符在C++中表示“不等于”?

A!=
B==
C<>
D!
3判断题

表达式 (5 == 5) 在C++中的结果是 true。

4填空题
补全以下代码,使程序输出两个整数比较的布尔结果。\nint a = 10, b = 20;\ncout << (a ___ b);
5填空题
补全以下代码,判断变量x是否大于等于y,并将结果输出。\nint x = 15, y = 10;\nbool result = x ___ y;\ncout << result;