📄 一句话概括
第三种形式 if-else if-else:像下楼梯一样逐级检查,哪级条件先命中就走哪级、直接离开,全不中走 else 兜底。分数定等级这种"多档选一"的事,全靠它。
一、语法与执行流程
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 80) {
cout << "良好" << endl;
} else if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
执行顺序(对着图看):从上往下逐级试条件 → 第一级 >=90 中了就走"优秀",下面全部不看;没中落到第二级 >=80……全没中走 else。
两个关键认知:
- 阶梯是"隐含条件"——程序走到第二级时,第一级必然没中(score 必然 < 90),所以
else if (score >= 80)实际含义是 80~89。条件不用写全,顺序就是逻辑。 - 命中即走——整个阶梯最多只执行一块,和
if-else一样互斥;想"命中后还接着查"就得用连续的独立if(语义完全不同,见误区 2)。
二、实例 03:根据成绩划分等级
用上面这段代码,输入 95→"优秀"、85→"良好"、73→"及格"、42→"不及格"。
测试要喂边界:90(优秀下界)、89(良好上界)、60、59——边界是条件写错的高发区。如果把第二级误写成 score > 80,89 分会被判成"及格",一测边界就现形。
级数不限:else if 可以写任意多个,最后 else 可省——但不写 else 时"全不中"就什么都不做,要想清楚这正不正是你要的。
三、30 秒实验:打乱顺序会怎样
把上面阶梯的三个条件倒过来排(先 >=60 再 >=80 再 >=90),输入 95:
看到什么算成功:输出"及格"——因为第一级 95>=60 就命中了,直接离开,后面更严的条件永远没机会。这就是"顺序即逻辑"的反面教材:多分支条件必须从严到宽(范围小的放上面)。
四、常见误区
- "else if 也要写全条件"——如
score >= 80 && score < 90:写全不算错,但阶梯已经隐含了score < 90,写全反而啰嗦。 - "连续几个独立 if 等于阶梯"——不等。独立
if每级都检查、可能命中多级;阶梯命中一级就收工。判等级用独立if会把"及格"的输出覆盖成"优秀",彻底乱套。 - "条件顺序随便排"——见上面的实验,必须从严到宽。这是多分支第一大坑。
自测三问(点开对答案)
1. 阶梯第二级 `else if (score >= 80)` 的隐含条件是什么?——`score < 90`(第一级没中),实际范围 80~89。 2. 输入 85 时整个阶梯执行几块?——一块("良好"),命中即走,其余全跳。 3. 多分支条件的排列原则?——从严到宽(范围小的放上面);打乱会被宽条件截胡。- ☐ 4.3 使用条件运算符进行判断(下一节)
相关笔记
- 第二种形式的判断语句 —— 阶梯的雏形
- switch语句 —— 另一种多分支,按"对号入座"干活
- 🔷 C++基础 · 索引 —— 全课路线图