亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

while 与 do-while 循环深度对比:原理、语法与实战案例全解析

什么是循环?

循环是让程序重复执行一段代码,直到指定条件变为假。循环由两部分组成:循环体(重复执行的语句)和控制语句(决定何时停止的条件判断)。循环的核心目的是避免重复编写相同代码,实现自动化批量处理。

while 循环(入口控制循环)

while 是最基础的循环结构。它在执行循环体之前先判断条件:只有条件为真时才进入循环体。执行完一次循环体后,控制流返回条件判断处,再次评估。若条件变假,则退出循环。

关键特性:若初始条件即为假,循环体一次也不会执行(零次执行可能)。

do-while 循环(出口控制循环)

do-while 与 while 结构相似,但条件判断后置:先无条件执行一次循环体,随后检查条件。若条件为真,继续下一轮;否则退出。

关键特性:循环体至少执行一次,无论初始条件真假。

核心差异速览

维度while 循环do-while 循环
条件检查时机循环开始前(前测试)循环结束后(后测试)
控制类型入口控制出口控制
首次执行保证不保证(可能零次)保证至少一次
语法结束符条件后无分号条件后必须加分号
计数器初始化位置仅循环前循环前或循环体内均可
典型适用场景次数未知、可能零次的重复任务菜单驱动、至少需交互一次的场景

语法规范

while 循环

while (条件表达式) {
    循环体语句;
}

do-while 循环

do {
    循环体语句;
} while (条件表达式);  // 注意末尾分号

流程图解析

while 循环流程

  1. 进入循环
  2. 评估条件表达式
  3. 条件为真 → 执行循环体 → 回到步骤 2
  4. 条件为假 → 退出循环,执行后续代码

do-while 循环流程

  1. 进入循环
  2. 无条件执行循环体
  3. 评估条件表达式
  4. 条件为真 → 回到步骤 2
  5. 条件为假 → 退出循环,执行后续代码

C 语言实战示例

示例 1:while 循环打印 1~4

#include <stdio.h>

int main(void) {
    int num = 1;                       // 初始化计数器
    while (num <= 4) {                 // 条件判断
        printf("%d\n", num);           // 循环体:打印当前值
        num++;                         // 更新计数器
    }
    return 0;
}

输出:

1
2
3
4

解析:num 从 1 开始,每次循环打印并自增,当 num 变为 5 时条件 num <= 4 为假,循环终止。

示例 2:do-while 循环打印 2 的乘法表(前 4 项)

#include <stdio.h>

int main(void) {
    int num = 1;
    do {
        printf("%d\n", 2 * num);       // 先执行打印
        num++;
    } while (num <= 4);                // 后判断条件
    return 0;
}

输出:

2
4
6
8

解析:即使初始 num=5,循环体也会先执行一次打印 2*5=10,然后判断 5<=4 为假退出。这体现了“至少一次”的语义。

进阶对比:同一逻辑的两种写法

任务:读取用户输入的正整数,直到输入 0 为止。

while 版本

int input;
printf("请输入正整数(0 退出):");
scanf("%d", &input);           // 首次读取在循环外
while (input != 0) {
    printf("你输入了:%d\n", input);
    printf("请输入正整数(0 退出):");
    scanf("%d", &input);       // 循环末尾再次读取
}

do-while 版本

int input;
do {
    printf("请输入正整数(0 退出):");
    scanf("%d", &input);
    if (input != 0) {
        printf("你输入了:%d\n", input);
    }
} while (input != 0);

观察:do-while 将读取与判断合并,避免了“首次读取”与“循环内读取”的代码重复,更符合“至少交互一次”的业务语义。

如何选择?

常见陷阱与最佳实践

扩展:其他语言中的对应结构

语言while 等价do-while 等价
C / C++ / Java / C# / JSwhile (cond) { }do { } while (cond);
Pythonwhile cond:无原生语法,用 while True: + break 模拟
Gofor cond { }无原生语法,用 for { if !cond { break } } 模拟
Rustwhile cond { }loop { if !cond { break } }

C语言

  1. 直流与交流电机核心差异与选型指南
  2. C# 表达式、语句与代码块:全面指南与实战示例
  3. 掌握 C# while 与 do-while 循环:语法、示例与最佳实践
  4. C++ while 与 do-while 循环:重复控制流完全掌握
  5. C 语言 while 与 do-while 循环实战指南
  6. C++ do-while 循环详解:语法、实战示例与嵌套循环
  7. C++ Struct 与 Class 核心差异、语法及最佳实践
  8. 精通 C# 继承与多态:实战代码示例详解
  9. 精通 C# Queue:Enqueue、Dequeue 与先进先出操作全解析
  10. C# 与 C++ 深度对比:特性、性能与适用场景全景解析
  11. while 与 do-while 循环深度对比:原理、语法与实战案例全解析
  12. 精通 Java while & do-while 循环:分步教程