📄 一句话概括
判断语句是分支结构的 C++ 写法,全是一家人:单分支 if(真才做)、双分支 if-else(二选一)、多分支 if-else if-else(逐级挑)。本节先认全三张脸、看清共同骨架,4.2.1~4.2.3 再逐个细拆。
一、共同骨架:先算条件,再看真假
三种形式长着同一副骨架:
if (条件) { ... } // 条件是 bool 表达式
小括号里站的是第 3 章练出来的表达式——score >= 90、n % 2 != 0、a && b 都行。执行时先把条件算出一个真/假,再按真假决定走哪条路。
三条铁律(三种形式通用,后面不重复):
if后面不加分号——if (a > 5);这个分号是空语句,等于"条件为真时什么都不干",真正的代码块反而变成无条件执行(新手第一坑,4.2.1 实验验证)。- 多个语句必须加大括号——大括号圈出"条件为真时的地盘";不加的话,
if只管紧跟它的一条语句。 - 条件里的
==别手滑成=——if (a = 5)是赋值再判真假(3.1.2 讲过),防手滑神技:常量放左边if (5 == a)。
二、三种形式各管一摊
| 形式 | 适用场景 | 例 |
|---|---|---|
单分支 if |
一件事做或不做 | 成绩不及格才提示 |
双分支 if-else |
二选一,必有结果 | 成年/未成年 |
多分支 if-else if-else |
多档选一 | 成绩分优良中差 |
选型心法:几条路就选第几种——但要记住多分支能覆盖前两种(if-else if-else 写成只有一级就是 if-else),反过来不行。
三、30 秒实验:验证"分号坑"
#include <iostream>
using namespace std;
int main() {
int a = 3;
if (a > 5); // 注意这个分号!
cout << "大于5" << endl; // 它其实不受 if 管
return 0;
}
看到什么算成功:输出"大于5"——a 是 3,条件明明是假!因为分号让 if 管了一条空语句,下一行成了普通语句。删掉分号再跑,什么都不输出——这才是对的。编译器对这种写法常给警告("空语句"),警告别无视。
四、常见误区
- "if 和 else 中间可以再插一句独立语句"——不行。
if块和else必须紧挨着,中间插语句会报错(else找不到主)。 - "条件写反了也能跑,没关系"——能跑但结果错。判断逻辑是"业务级错误",编译器帮不了你,必须自己验(用两组输入各跑一遍)。
- "三种形式是三个不相关的东西"——是一家人:多分支是双分支的
else里再套if的简化写法(else if连写的糖),4.5 嵌套会揭底。
自测三问(点开对答案)
1. `if (条件)` 里的条件是什么类型的东西?——能算出 `bool` 值的表达式(关系/逻辑运算符搭的)。 2. `if (a > 5);` 的问题在哪?——分号是空语句,`if` 管住了它,真正的代码反而无条件执行。 3. 什么时候用双分支而不是单分支?——真、假两种情况**都要做事**(只管"做或不做"就用单分支)。- ☐ 4.2.1 第一种形式的判断语句(下一节)
相关笔记
- 决策分支 —— 本章总览
- 逻辑运算符 —— 复杂条件的搭法
- 🔷 C++基础 · 索引 —— 全课路线图