📄 一句话概括
for (初始化; 条件; 更新) { 循环体 } —— 把 while 散落三处的三要素收进一行。它不是新循环:执行顺序和 while 完全一样,只是"数圈数"这类套路写得最紧凑。知道次数的循环用 for,看情况的用 while——这是 C++ 界公认的分工。
📝 本节和前面几节的关系
5.1 说"三要素缺一不可",本节把三要素钉进 for 的三个格子,想漏都难。for 的初始化还能顺手声明变量(int i = 1),而它的大括号就是 2.1.5 的作用域边界——i 出了 for 就消失(5.2.1 细说)。本节两篇:5.2.1 一般形式,5.2.2 变体。
一、for 的一行 = while 的三处
// for 写法
for (int i = 1; i <= 10; i++) {
sum += i;
}
// 完全等价的 while 写法
int i = 1; // ① 初始化
while (i <= 10) { // ② 继续条件
sum += i;
i++; // ③ 更新
}
两个写法跑出来的结果一模一样。for 的价值不在"能干新事",在三要素并排站好:
- 扫一眼括号就知从几到几、怎么走—— review 友好
- 更新写在括号里,不可能忘在循环体外(5.1.1 的死循环少了一大来源)
- 代价:括号里塞了三件事,第一眼信息密度大——所以先看懂 while,for 就只是"换个排版"
二、分工口诀:数圈用 for,看情况用 while
| 场景 | 选谁 | 例子 |
|---|---|---|
| 明确知道圈数(数到 10、打 5 行) | for | 实例03 累加 1~10 |
| 按条件收数据(读到文件尾、用户输 0 停) | while | 哨兵循环 |
| 至少做一次再验 | do...while | 菜单、输入校验 |
30 秒实验:把 5.1.1 实例01 的 while 版和上面 for 版各跑一遍,输出都是 55——再用纸面演算表(5.1 的 Demo)走一遍 for,会发现每一步都和 while 版逐行对应。
三、常见误区
- "for 是第三种新循环"——不是,它和 while 同一套流程图;学 for 不必推倒重来,做"位置对应"就行。
- "分号可以换成逗号"——for 括号里两个分号是语法骨架,永远两个、不能多不能少;里面的逗号是表达式用法(5.2.2 再说)。
- "更新写在循环体里也行"——语法上行(更新段空着),但两处更新迟早打架;要变体就系统地变(5.2.2),别混搭。
自测三问(点开对答案)
1. for 括号里三段各是什么?——①初始化(进圈前一次)②继续条件(每圈判)③更新(每圈体后);两个分号是骨架。 2. for 和 while 谁多了新能力?——谁都没有;for 只是排版不同,执行顺序相同。 3. "数圈用 for,看情况用 while"是什么意思?——圈数明确选 for;结束条件由数据/用户决定选 while。- ☐ 5.2.1 for循环语句的一般形式(下一节)
相关笔记
- while 循环 —— for 的"母版"
- 节导言 —— 三要素从哪来
- 🔷 C++基础 · 索引 —— 全课路线图