应根据循环体是否必须至少执行一次来选择:需先执行再判断时用do-while(如菜单交互、输入验证、初始化后轮询);可能完全不执行时用while(如处理空数据、等待外部条件、边界控制)。

关键看循环体是否必须至少执行一次。这是选择 do-while 还是 while 的最直接依据。
需要先执行、再判断的场景用 do-while
这类场景要求用户或系统必须完成一次操作,之后才根据结果决定是否继续。
- 菜单交互:先显示菜单选项,再读取用户输入并判断是否退出
- 输入验证:让用户先输一次用户名和密码,再检查是否正确;即使第一次就错,也要给反馈
- 初始化后轮询:比如打开设备后立即读取一次状态,再循环等待就绪信号
可能完全不执行的场景用 while
当循环前已有明确前提条件,不满足时整段逻辑应跳过,就不该执行循环体。
- 处理空数据:遍历链表前先判断头节点是否为空,为空则整个循环不进入
- 等待外部条件:如
while (!fileReady) { sleep(100); },若文件已就绪,一次都不等 - 边界控制:如
while (index ,数组长度为 0 时直接跳过
注意语法和执行细节
do-while 的分号不能漏,它属于语句结束符;while 后面没有分号。更本质的区别在执行顺序:
- while 是“先查后干”:条件为假 → 循环体零次
- do-while 是“先干后查”:哪怕条件一开始就是假,也干一次
别混淆 for 和它们的关系
for 循环适合次数明确的场景,和 while/do-while 不是同一维度的选择。当循环次数不确定时,才在 while 和 do-while 之间二选一。










