📄 一句话概括
while (条件) { 循环体 } —— 先验后跑:条件真就执行循环体,跑完回来再判,直到条件为假。它把循环三要素摆得明明白白:初始化写在循环前、条件写在括号里、更新写在循环体里。实例01 用它把 1 加到 10,顺手见识"删掉更新就是死循环"。
📝 本节和前面几节的关系
5.1 画了循环三要素和两兄弟全景,本篇落地第一个:while。判断条件就是 3.1.3 的 bool 表达式;sum += i 是 3.1.4 复合赋值上岗;i++ 是第二章自增的实战。while 是所有循环的"母版"——下一节 do...while 只是挪了判断的位置,5.2 的 for 只是把三要素收进一行。
一、while 的完整流程
while (继续条件) {
循环体; // 干活 + 更新(让条件趋向假)
}
执行顺序一行读完:判条件 → 真 → 执行 → 回头再判 → … → 假 → 出循环。三要素各就各位:
| 要素 | 位置 | 实例01 |
|---|---|---|
| ① 初始化 | while 之前,只做一次 | int i = 1, sum = 0; |
| ② 继续条件 | while 括号里,每圈都判 | i <= 10 |
| ③ 更新 | 循环体最后一行 | i++ |
数次数:判断比执行多一次(最后那次的"假"是出口)——1 加到 10,判断 11 次、执行 10 次。
二、实例 01:用 while 计算 1 到 10 的累加结果
#include <iostream>
using namespace std;
int main() {
int i = 1; // ① 初始化:从 1 开始
int sum = 0; // 累加器先清零
while (i <= 10) { // ② 继续条件
sum += i; // 攒一笔
i++; // ③ 更新:往 10 靠近一步
}
cout << "1 到 10 的累加结果是 " << sum << endl;
return 0;
}
看到什么算成功:输出 1 到 10 的累加结果是 55(1+2+…+10 = 10×11÷2 = 55,数学可验)。
while 的两个必查项(写完默数一遍):
- 条件里有变量吗? 没有变量就是恒真死循环。
- 循环体里动它了吗? 不更新就是死循环——
i永远是 1,i <= 10永远真。
三、死循环长什么样(故意写一次)
int i = 1;
while (i <= 10) {
cout << i << endl; // 只打印不更新
}
现象:屏幕上 1 无限刷。处理:控制台里按 Ctrl + C 强停(Dev-C++ 关掉黑窗口也行)。
死循环不全是错误——"while (true) + 条件 break"是正规写法(5.3.2 详说),但那是有意设计;无意死循环是 bug,三要素自查能拦下九成。
30 秒实验:把实例01 的 i++ 挪到 sum += i 前面再跑——输出变成 65(多加了 11)。一行代码的顺序,就是循环"数到几"的差异:先加后增是加到 10,先增后加是加到 11。
四、常见误区
- "条件后面顺手加分号"——
while (i <= 10);的分号是空语句循环体:条件真就无限空转,下面的真循环体反而不归它管。和 4.2 的 if 分号坑同源,编译器警告别无视。 - "循环体忘加大括号"——不带大括号时 while 只管紧跟的一条语句;
while (...) sum += i; i++;里i++在循环外,照样死循环。永远写大括号最稳。 - "浮点当循环变量"——
double d = 0.0; while (d != 1.0) d += 0.1;因浮点近似值(2.2.2)永远凑不准 1.0,死循环。循环变量用整数最稳。
自测三问(点开对答案)
1. while 执行顺序?——判条件 → 真 → 执行 → 回判……假 → 出循环;判断比执行多一次。 2. 实例01 删掉 `i++` 会怎样?——条件永远真,死循环刷 1,`Ctrl + C` 强停。 3. `while (i <= 10);`(带分号)的后果?——空语句当循环体:条件真时空转不停,真循环体反而一次不执行。- ☐ 5.1.2 do...while 循环(下一节)
相关笔记
- while 和 do...while 循环 —— 三要素与两兄弟全景
- 赋值运算符 ——
sum += i的出处 - 判断语句 —— 分号空语句坑的第一次登场
- 🔷 C++基础 · 索引 —— 全课路线图