Skip to content

C 循环

循环用于只要满足某个条件,就重复执行一段代码块。这避免了多次书写相同的代码。

编程语言提供了用于迭代(循环)的控制结构。如果没有循环,要执行一个任务 100 次就需要将代码写 100 次。

循环的一般结构包括:

  1. 初始化 (Initialization): 设置循环控制变量(可选,通常在循环之前完成)。
  2. 条件检查 (Condition Check): 在每次迭代之前(有时之后)评估一个条件。
  3. 循环体 (Loop Body): 需要重复执行的代码块。
  4. 更新 (Update): 每次迭代后修改循环控制变量(最终使条件变为假)。

如果条件永远不会变为假,则循环会永远运行(无限循环)。

C 语言提供了以下几种循环类型:

循环类型描述
while 循环只要条件为真,就重复执行循环体。条件在每次迭代之前检查。
for 循环一种紧凑的循环结构,常用于已知或容易确定迭代次数的情况。其头部包含初始化、条件检查和更新表达式。
do...while 循环与 while 类似,但条件在循环体执行之后检查。保证循环体至少执行一次。
嵌套循环 (Nested loops)在一个循环的循环体内部放置另一个循环。

循环控制语句 (Loop Control Statements)

Section titled “循环控制语句 (Loop Control Statements)”

这些语句改变了循环内的正常执行流程:

控制语句描述
break 语句立即终止包含它的最内层循环(for, while, do...while)或 switch 语句。执行将继续从被终止的循环/switch 之后的语句开始。
continue 语句跳过当前循环迭代的剩余部分,并进入下一次迭代的条件检查(以及 for 循环中的更新)。
goto 语句无条件地将控制权转移到同一函数内的带标签语句。在现代编程中强烈不建议使用 goto,因为它会使代码难以阅读、调试和维护。请使用 break、continue 或函数调用代替。

如果循环的条件始终评估为真,它就会变成无限循环。for 循环提供了一个常见的习惯用法来实现这一点:

#include <stdio.h>
int main(void) {
// 使用 for 结构实现的无限循环
for (;;) { // 没有初始化,没有条件,没有更新
printf("This loop will run forever... (Press Ctrl+C to stop)\n");
// 通常,循环内部的某个条件会触发 'break'
// 或者程序执行连续任务(如服务器)
}
// 这部分代码永远不会被执行到
return 0;
}

for 循环中空的条件隐式地被视为真。虽然 while(1) 也能创建无限循环,但在 C 语言中,for (;;) 是一个传统且常被首选的方式来表示有意的无限循环。

你通常需要外部方式(例如,在终端中按 Ctrl+C)或通过循环内部基于某个内部条件使用 break 语句来终止无限循环。