🔷 第五章 循环语句
📄 一句话概括

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 的价值不在"能干新事",在三要素并排站好:

二、分工口诀:数圈用 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 版逐行对应。

三、常见误区

  1. "for 是第三种新循环"——不是,它和 while 同一套流程图;学 for 不必推倒重来,做"位置对应"就行。
  2. "分号可以换成逗号"——for 括号里两个分号是语法骨架,永远两个、不能多不能少;里面的逗号是表达式用法(5.2.2 再说)。
  3. "更新写在循环体里也行"——语法上行(更新段空着),但两处更新迟早打架;要变体就系统地变(5.2.2),别混搭。
自测三问(点开对答案) 1. for 括号里三段各是什么?——①初始化(进圈前一次)②继续条件(每圈判)③更新(每圈体后);两个分号是骨架。 2. for 和 while 谁多了新能力?——谁都没有;for 只是排版不同,执行顺序相同。 3. "数圈用 for,看情况用 while"是什么意思?——圈数明确选 for;结束条件由数据/用户决定选 while。

相关笔记