C 语言编程教程

C 语言 - 首页

C 语言基础

C 语言 - 概述 C 语言 - 特性 C 语言 - 发展历史 C 语言 - 环境设置 C 语言 - 程序结构 C 语言 - Hello World C - 编译过程 C - 注释 C - 标记 C - 关键字 C - 标识符 C - 用户输入 C - 基本语法 C - 数据类型 C - 变量 C - 整数提升 C - 类型转换 C - 类型转换 C - 布尔值

C 语言中的常量和文字

C - 常量 C - 字面量 C - 转义序列 C - 格式说明符

C 语言中的运算符

C - 运算符 C - 算术运算符 C - 关系运算符 C - 逻辑运算符 C - 位运算符 C - 赋值运算符 C - 一元运算符 C - 递增和递减运算符 C - 三元运算符 C - sizeof 运算符 C - 运算符优先级 C - 其他运算符

C 语言中的决策

C - 决策 C - if 语句 C - if...else 语句 C - 嵌套 if 语句 C - switch 语句 C - 嵌套 switch 语句

C 语言中的循环

C - 循环 C - While 循环 C - For 循环 C - Do...while 循环 C - 嵌套循环 C - 无限循环 C - Break 语句 C - Continue 语句 C - goto 语句

C 语言中的函数

C - 函数 C - Main 函数 C - 按值调用函数 C - 按引用调用函数 C - 嵌套函数 C - 可变参数函数 C - 用户定义函数 C - 回调函数 C - return 语句 C - 递归

C 语言中的作用域规则

C - 作用域规则 C - 静态变量 C - 全局变量

C 语言中的数组

C - 数组 C - 数组的属性 C - 多维数组 C - 将数组传递给函数 C - 从函数返回数组 C - 可变长度数组

C 语言中的指针

C - 指针 C - 指针和数组 C - 指针的应用 C - 指针运算 C - 指针数组 C - 指向指针的指针 C - 将指针传递给函数 C - 从函数返回指针 C - 函数指针 C - 指向数组的指针 C - 指向结构体的指针 C - 指针链 C - 指针 vs 数组 C - 字符指针和函数 C - NULL 指针 C - void 指针 C - 悬垂指针 C - 解引用指针 C - Near、Far 和 Huge 指针 C - 指针数组的初始化 C - 指针与多维数组

C 语言中的字符串

C - 字符串 C - 字符串数组 C - 特殊字符

C 语言的结构体和联合

C - 结构体 C - 结构体和函数 C - 结构体数组 C - 自引用结构 C - 查找表 C - 点 (.) 运算符 C - 枚举(或 enum) C - 结构填充和打包 C - 嵌套结构 C - 匿名结构和联合 C - 联合 C - Bit 位字段 C - Typedef

C 语言中的文件处理

C - 输入和输出 C - 文件 I/O(文件处理)

C 语言中的预处理器

C - 预处理器 C - #pragma 编译指示 C - 预处理器操作符 C - 宏 C - 头文件

C 语言中的内存管理

C - 内存管理 C - 内存地址 C - 存储类

C 其他主题

C - 错误处理 C - 可变参数 C - 命令执行 C - 数学函数 C - static 静态关键字 C - 随机数生成 C - 命令行参数

C 语言编程资源

C语言问题与解答答案 C语言快速指南 C语言速查表 C语言实用资源 C语言讨论


C - 无限循环

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 语言中中断无限循环?

在编程中,有时您需要以无条件的 whilefor 语句开始,但随后需要通过放置条件 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 关键字终止循环。

c_loops.html