← 目录 / 第五章 · 循环结构 / 5.1 while 循环

5.1 while 循环

当需要重复执行一段代码时,可以使用循环。C++ 提供三种循环结构,各有适用场景,while 是其中最基础、最直观的一种。

while 循环

程序有时需要把同一段代码重复执行很多遍——打印 1 到 100、反复读入数据直到用户输入 0 为止。这种"重复执行"的能力,就是循环结构要解决的问题。

5.1.1 三种循环一览

C++ 提供三种循环结构,虽然写法不同,但本质上都是在做同一件事:反复判断条件、反复执行代码。选哪一种,取决于"循环次数是否提前知道"以及"要不要至少执行一次":

🔁 while
先判断,再执行。
条件为 false 时一次都不执行。
适合:循环次数不确定的情况。
🔂 do-while
先执行,再判断。
至少执行一次,再决定是否继续。
适合:必须先做一次的场景(如输入验证)。
🔃 for
初始化、判断、更新三合一。
结构最紧凑,最常用。
适合:循环次数已知的情况。

5.1.2 while 循环的基本结构

while 循环会先判断条件,条件为真才执行循环体,条件为假则直接跳过,适合循环次数不确定的情况。

♾️
避免死循环:while 循环体中必须有能让条件最终变为 false 的操作(如 i++),否则程序会永远运行下去。死循环是初学者最常见的错误之一!

有一种特殊写法值得了解——while (true) 搭配 break(见 5.4 节)使用,让循环的退出时机由内部逻辑决定,而不是写在 while 的条件里:

C++ · while(true) 搭配 break
1int num;
2while (true) // 条件恒为真,退出时机交给内部逻辑决定
3{
4 cin >> num;
5 if (num == 0) break; // 输入 0 时才退出
6 cout << num * 2 << endl;
7}

5.1.3 常见陷阱与易错点

把本节内容汇总成几条最容易踩坑的规则:

1
忘记更新循环变量导致死循环:这是 while 循环最常见的错误——循环体里如果没有任何语句能让条件最终变为 false,程序会一直运行下去,只能强制终止。写 while 循环时,先确认条件里涉及的变量在循环体内确实会被修改。
2
循环变量忘记初始化:while 循环本身不像 for 那样自带初始化步骤,容易忘记在循环开始前给变量赋初值,导致条件判断使用了一个未定义的垃圾值。
3
用 while(true) 却忘了写退出条件:无限循环 while(true) 必须搭配 breakreturn 才能退出。如果内部逻辑漏掉了退出判断,程序同样会陷入死循环。
4
该用 for 却用了 while:如果循环次数在写代码时就已经确定(比如"循环10次"),用 for 能把初始化、条件、更新写在同一行,比 while 更紧凑、更不容易漏掉更新语句。while 更适合"不知道要循环几次,只知道什么时候停"的场景。