C - 无限循环
在 C 语言 中,无限循环(或 无限循环)是一种永无止境的循环结构,它会永远执行一组语句而不会终止循环。它有一个使程序能够持续运行的条件。
无限循环流程图
如果程序流程无条件地指向任何先前的步骤,则会创建无限循环,如下图所示 -

很少会故意创建无限循环。对于嵌入式无头系统和服务器应用程序,应用程序会以无限循环运行来监听客户端请求。在其他情况下,无限循环大多是由于无意的编程错误造成的。
如何在 C 语言中创建无限循环?
要创建无限循环,您需要使用循环结构(while、do while 或 for)之一,并以非零值作为测试条件。通常,测试条件为 1,您可以使用任何非零值。非零值被视为真。
示例
#include <stdio.h> int main() { while (1) { printf("Hello World"); } return 0; }
Hello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello WorldHello WorldHello WorldHello WorldHello WorldHello World Hello WorldHello WorldHello ...
C 语言中无限循环的类型
C 语言中,无限 while、无限 do while 和无限 for 是三种无限循环。这些循环会连续执行代码语句。让我们来了解如何使用各种循环结构实现无限循环。
无限 While 循环
关键字 while 用于形成计数循环。循环会重复执行,直到某个变量的值递增到预定值。但是,如果程序员忘记在循环体内添加递增语句,测试条件就根本无法满足,因此循环就会变成无限循环。
示例 1
请看以下示例 -
#include <stdio.h> // 无限 while 循环 int main(){ int i = 0; while (i <= 10){ // i++; printf("i: %d ", i); } return 0; }
输出
由于此处注释掉了递增语句,"i"的值始终保持为 0,因此输出会持续显示"i: 0",直到您强制停止执行。
i: 0 i: 0 i: 0 ... ...
示例 2
关键字 while 的括号包含一个布尔表达式,该表达式初始值为 True,最终应为 False。请注意,在 C 语言中,任何非零数字都被视为 True。因此,以下 while 循环是无限循环:
#include <stdio.h> // 无限 while 循环 int main(){ while(1){ printf("Hello World "); } return 0; }
输出
它将不断打印"Hello World"。
Hello World Hello World Hello World ... ...
while 循环的语法如下 -
while (condition){ . . . . . . }
请注意,while 前面没有分号,这表示后面的代码块(大括号内)是循环体。如果添加分号,编译器会将其视为无循环体的循环,因此 while 的条件永远不会满足。
示例 3
在下面的代码中,循环块内有一个增量语句,但由于 while 前面有分号,导致循环变为无限循环。
#include <stdio.h> // 无限 while 循环 int main(){ int i = 0; while(i < 10);{ i++; printf("Hello World "); } return 0; }
输出
When the program is run, it won't print the message "Hello World". There is no output because the while loop becomes an infinite loop with no body.
无限 For 循环
C 语言中的 for 循环 用于对变量的每个值执行代码块的迭代,从初始值到最终值,每次迭代都会递增。
查看其语法 -
for (initial val; final val; increment){ . . . . . . }
示例 1
请注意,for 语句的所有三个子句都是可选的。因此,如果省略了指定要测试的最终值的中间子句,循环将变为无限循环。
#include <stdio.h> // 无限 for 循环 int main(){ int i; for(i=1; ; i++){ i++; printf("Hello World "); } return 0; }
输出
程序会不断打印 Hello World,直到您强制停止,因为每次循环时"i"的递增没有任何效果。
Hello World Hello World Hello World ... ...
您也可以构造一个 for 循环来递减循环变量的值。在这种情况下,初始值应该大于最终测试值,并且 for 中的第三个子句必须是递减语句(使用"--"运算符)。
如果初始值小于最终值,并且第三个语句是递减语句,则循环将变为无限循环。如果初始值较大,但您错误地使用了增量语句,循环仍然会陷入无限循环。
因此,两个 for 循环都会导致无限循环。
示例 2
请看以下示例 -
#include <stdio.h> int main(){ // 无限循环 for(int i = 10; i >= 1; i++){ i++; printf("Hello World "); } }
输出
程序将在无限循环中打印一系列"Hello World"-
Hello World Hello World Hello World ... ...
示例 3
查看以下示例-
#include <stdio.h> int main(){ // 无限循环 for(int i = 1; i <= 10 ; i--){ i++; printf("Hello World "); } }
输出
程序循环不断打印"Hello World" -
Hello World Hello World Hello World ... ...
示例 4
如果括号中的三个语句均为空,则该循环显然是无限循环,因为没有条件可测试。
#include <stdio.h> int main(){ int i; // 无限循环 for ( ; ; ){ i++; printf("Hello World "); } }
输出
程序在无限循环中打印"Hello World" -
Hello World Hello World Hello World ... ...
无限 Do While 循环
也可以使用 do-while 循环 结构实现无限循环。您必须使用 1 作为 while 语句的测试条件。
示例
以下示例演示了使用 do while 语句的无限循环:
#include <stdio.h> int main() { do { printf("Hello World "); } while (1); return 0; }
Hello World Hello World Hello World Hello World ... ...
如何在 C 语言中中断无限循环?
在编程中,有时您需要以无条件的 while 或 for 语句开始,但随后需要通过放置条件 break 语句 来终止循环。
示例
在下面的程序中,for 中没有测试语句,但我们使用了 break 语句使其成为有限循环。
#include <stdio.h> int main(){ // 无限 while 循环 for(int i = 1; ; ){ i++; printf("Hello World "); if(i == 5) break; } return 0; }
输出
程序打印"Hello World",直到计数器变量达到 5。
Hello World Hello World Hello World Hello World
如何在 C 语言中强制停止无限循环?
当程序进入无限循环时,它不会自行停止。必须强制停止。可以通过按"Crtrl + C"或"Ctrl + Break"或其他任何组合键来实现,具体取决于操作系统。
示例
以下 C 程序进入无限循环 -
#include <stdio.h> int main(){ // 局部变量定义 int a = 0; //do循环执行 LOOP: a++; printf("a: %d ", a); goto LOOP; return 0; }
输出
执行时,上述程序会打印"a"从 1 开始递增的值,但不会停止。必须按"Ctrl + Break"键才能强制停止。
a: 1 a: 2 ... ... a: 10 a: 11 ... ...
无限循环大多是由于编程错误而无意创建的。即使循环关键字未指定终止条件,也必须使用 break 关键字终止循环。