C 语言无限循环

2025 年 7 月 5 日 | 阅读 8 分钟

在 C 编程中,无限循环是一种不会终止的循环结构,会永远执行下去。它也被称为不确定循环或无尽循环。它要么产生连续的输出,要么不产生任何输出。当循环的条件始终为真,并且没有理由让它终止时,就会发生这种情况。

如果不妥善处理,无限循环可能导致程序冻结或消耗过多的系统资源。在 C 语言中,可以通过使用 whilefordo-while 循环,并设置永不失败的条件或完全省略结束条件来创建无尽循环。

C 语言中的无限循环是如何发生的?

在 C 编程中,有两种情况会导致程序中出现无限循环。它们如下:

  • 有意实现的无限循环
  • 无意的无限循环

有意实现的无限循环

在 C 编程中,有意实现的无限循环是专门为需要无限运行的程序设计的。例如,服务器通常使用无尽循环来持续监听传入的客户端请求,而嵌入式设备可能会使用它们来实时监控传感器和处理事件。在这些情况下,无尽循环可确保软件尽可能长时间地运行,提供持续的服务,直到手动终止。

无意的无限循环

在 C 编程中,无意的无限循环是由代码中的逻辑错误引起的。如果循环不包含退出条件或构造不当,它将无限期运行。这可能导致程序冻结、无响应或消耗过多的系统资源,从而导致性能问题。

何时在 C 编程中使用无限循环?

对于那些接受用户输入并持续生成输出直到用户手动退出应用程序的应用程序来说,无限循环很有用。在以下情况下,可以使用此类循环:

  • 所有操作系统都在无限循环中运行,因为它们在执行完某些任务后不会消失。只有当用户手动关闭系统时,它们才会退出无限循环。
  • 所有服务器都在无限循环中运行,因为服务器会响应所有客户端请求。只有当管理员手动关闭服务器时,它们才会退出无限循环。
  • 所有游戏也都在无限循环中运行。游戏将接受用户请求,直到用户退出游戏。

C 语言中无限循环的类型

在 C 语言中,可以使用各种循环结构来构建无限循环,包括 while、for、do-while 和 goto 语句。每种类型都可以专门用于需要连续执行的任务,或者由于代码中的逻辑错误而发生。在 C 语言中,只要条件为真,无限 while 循环就会继续执行。如果条件保持为真或永远不会变为假,则循环将无限期运行。

  • for 循环
  • while 循环
  • do-while 循环
  • goto 语句
  • C 宏

现在,我们将逐一讨论这些不同的无限循环。

1) 无限 for 循环

在 C 编程中,如果 for 循环的初始化、条件和增量部分被省略,则循环将无限期运行,因为没有起始点、结束条件或更新步骤。

语法

它具有以下语法:

在这个语法中,

  • for: 它在 C 语言中启动一个 for 循环。
  • (; ;): 它表示一个空的初始化、条件和增量,导致循环无限期运行。
  • {: 它打开包含要重复的语句的块。
  • }: 它结束循环的代码块。

C 语言中的无限 For 循环示例

让我们以一个例子来说明 C 语言中的无限 for 循环。

示例

编译并运行

输出

 
It is an Infinite for loop iteration: 1
It is an Infinite for loop iteration: 2
It is an Infinite for loop iteration: 3
It is an Infinite for loop iteration: 4   

说明

在此示例中,for(;;) 是一个无限循环,它会重复打印计数。由于没有条件,因此它将连续运行。

2) 无限 While 循环

在 C 编程中,只要条件保持为真,无限 while 循环就会执行。如果条件保持为真或永远不会变为假,则循环将无限期继续。

语法

它具有以下语法:

C 语言中的无限 While 循环示例

让我们以一个例子来说明 C 语言中的无限 while 循环。

示例

编译并运行

输出

 
It is an infinite while loop.
It is an infinite while loop.
It is an infinite while loop.
It is an infinite while loop.   

说明

在此示例中,while(1) 永远运行,因为条件始终为真。
它继续执行相同的块。

3) 无限 do-while 循环

在 C 编程中,标准的 do-while 循环至少执行一次,而无限 do-while 循环则无限期地继续,只要循环条件保持为真。如果条件设置为 true(例如 1),或者条件中使用的变量永远不会更新为 false,则可能会发生这种情况。

语法

它具有以下语法:

  • do 和 { } 标签括起来的代码块将被反复执行。
  • while (1); 在每次迭代后检查条件,由于 1 始终为真,因此循环无限期运行。

C 语言中的无限 do-while 循环示例

让我们以一个例子来说明 C 语言中的无限 do-while 循环。

示例

编译并运行

输出

 
It is an infinite do-while loop iteration count: 0
It is an infinite do-while loop iteration count: 1
It is an infinite do-while loop iteration count: 2
It is an infinite do-while loop iteration count: 3

说明

在此示例中,do {... } while(1); 无限运行并始终执行一次。
每次迭代后检查的条件都保持为真。

4) 使用 goto 语句在 C 语言中创建无限循环

在 C 编程中,goto 语句允许我们直接跳转到代码中的某个带标签的区域。虽然它对于跳出嵌套循环或处理某些错误情况很有用,但通常应避免使用它,因为它会使程序更难阅读和维护。

当使用 goto 语句时,如果我们不设置停止条件,程序可能会不断跳转回同一个标签,从而意外或有意地创建无限循环。

语法

它具有以下语法:

goto 语句中的无限循环示例(C 语言)

让我们以一个例子来说明 C 语言中 goto 语句的无限循环。

示例

编译并运行

输出

 
It is an infinite loop using goto statement: 1
It is an infinite loop using goto statement: 2
It is an infinite loop using goto statement: 3
It is an infinite loop using goto statement: 4
It is an infinite loop using goto statement: 5   

说明

在 C 编程中,goto 标签不断跳转回,这会产生无限循环。程序控制会不断返回到标签。

5) C 语言中的无限循环与宏

在 C 编程中,宏是 预处理器指令,它们允许我们定义可重用代码块。它们提高了可读性并消除了重复,使代码更清晰、更易于维护,尤其是在我们需要多次使用相同逻辑时。

我们可以通过将 展开为循环结构(例如 while(1))来定义无限循环,它会无限期运行。

语法

它具有以下语法:

在这个语法中,

  • #define 是定义宏的预处理器指令。
  • INFINITE_LOOP_MACRO 是我们将在代码中使用的宏名称。
  • 宏体 (while(1) {... }) 是一个无限循环,每当宏名称出现在我们的代码中时,它就会展开。

C 语言宏中的无限循环示例

让我们以一个例子来说明宏中的无限循环。

示例

编译并运行

输出

 
Infinite Loop
Infinite Loop
Infinite Loop
Infinite Loop
Infinite Loop   

说明

在此示例中,#define LOOP while(1){...} 创建了一个无限循环。它会在没有中断的情况下持续运行循环体。

C 语言无限循环常见问题解答

1) C 语言中的无限循环是什么?

在 C 编程中,无限循环是一种无限期运行且不会终止的循环,因为它的条件永远不会变为 false 或根本没有结束条件。

2) C 程序可以使用无限循环吗?

是的,无限循环在需要程序无限运行直到手动终止的实时系统、服务器和嵌入式系统中很有用。

3) C 语言中无意的无限循环是由什么引起的?

在 C 编程中,无意的无限循环可能由缺失或不正确的循环条件、缺少变量更新、使用 = 而不是 ==,或循环条件中的逻辑错误引起。

4) 如何在 C 语言中故意生成无限循环?

我们可以使用以下方法在 C 语言中故意创建无限循环:

5) 在 C 语言中,如何停止一个正在运行的无限循环?

我们可以通过在终端中按 Ctrl + C 或关闭程序窗口来手动终止无限循环。


下一主题C break 语句