C 循环
C 语言 - 循环 (Loops)
Section titled “C 语言 - 循环 (Loops)”循环用于只要满足某个条件,就重复执行一段代码块。这避免了多次书写相同的代码。
编程语言提供了用于迭代(循环)的控制结构。如果没有循环,要执行一个任务 100 次就需要将代码写 100 次。
循环的一般结构包括:
- 初始化 (Initialization): 设置循环控制变量(可选,通常在循环之前完成)。
- 条件检查 (Condition Check): 在每次迭代之前(有时之后)评估一个条件。
- 循环体 (Loop Body): 需要重复执行的代码块。
- 更新 (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 或函数调用代替。 |
无限循环 (The Infinite Loop)
Section titled “无限循环 (The Infinite Loop)”如果循环的条件始终评估为真,它就会变成无限循环。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 语句来终止无限循环。