C - While 循环
在 C 语言中,while 是用于构成循环的关键字之一。while 循环是C 语言中最常用的循环类型之一。C 语言中的其他循环关键字包括 for 和 do-while。
while 循环通常被称为入口验证循环,而 do-while 循环 被称为出口验证循环。另一方面,for 循环 是一个自动循环。
C while 循环的语法
构建 while 循环的语法如下 -
while(expression){ statement(s); }
while 关键字后跟一个括号,括号内应包含一个布尔表达式。括号后,花括号内是一段语句。
C 语言 while 循环流程图
以下流程图展示了 while 循环的工作原理 -

C 语言中 while 循环的工作原理是什么?
C 编译器 会计算表达式的值。如果表达式为真,则执行其后的代码块。如果表达式为假,编译器将忽略 while 关键字后面的代码块,并继续执行该代码块之后的下一个语句。
由于在程序进入循环之前会先测试控制循环的表达式,因此 while 循环被称为进入验证循环。这里需要注意的关键点是,如果在第一次执行时发现条件不成立,while 循环可能根本不会执行。
while 关键字意味着只要表达式为真,编译器就会继续执行接下来的代码块。条件位于循环结构的顶部。每次迭代之后,都会测试条件。如果条件为真,编译器将执行下一次迭代。一旦发现表达式为假,循环体将被跳过,并执行 while 循环后的第一个语句。
C 语言 while 循环示例
以下程序打印"Hello World"消息五次。
#include <stdio.h> int main(){ // 局部变量定义 int a = 1; // while 循环执行 while(a <= 5){ printf("Hello World "); a++; } printf("End of loop"); return 0; }
输出
此处,while 循环充当计数循环。运行代码并检查其输出 -
Hello World Hello World Hello World Hello World Hello World End of loop
示例说明
在 while 语句之前,控制循环次数的变量"a"被初始化为 1。由于条件"a <= 5"为真,程序进入循环,打印消息,将"a"加 1,然后返回循环顶部。
在下一次迭代中,"a"为 2,因此条件仍然为真,因此循环再次重复,直到条件变为假。循环停止,程序控制转到该代码块的下一步。
现在,将"a"的初始值更改为 10,然后再次运行代码。现在输出将显示以下内容:
End of loop
这是因为 while 关键字之前的条件在第一次迭代中就为 false,因此该代码块不会重复执行。
"char"变量表示与其 ASCII 值对应的字符。因此,它可以递增。因此,我们将变量的值从"a"递增到"z"。
将 while 用作条件循环
您可以将 while 循环用作条件循环,循环将一直执行到满足给定条件为止。
示例
在此示例中,while 循环用作条件循环。循环持续重复,直到收到的输入为非负值。
#include <stdio.h> int main(){ // 局部变量定义 char choice = 'a'; int x = 0; // while 循环执行 while(x >= 0){ (x % 2 == 0) ? printf("%d is Even ", x) : printf("%d is Odd ", x); printf(" Enter a positive number: "); scanf("%d", &x); } printf(" End of loop"); return 0; }
输出
运行代码并检查其输出 −
0 is Even Enter a positive number: 12 12 is Even Enter a positive number: 25 25 is Odd Enter a positive number: -1 End of loop
带有 break 和 continue 的 While 循环
在上面所有示例中,while 循环旨在重复执行一定次数,或直到满足特定条件。C 语言使用 break 和 continue 语句来控制循环。这些关键字可以在 while 循环内部使用。
示例
break 语句终止循环 -
while (expr){ . . . . . . if (condition) break; . . . }
示例
continue 语句使循环从头开始重复执行 -
while (expr){ . . . . . . if (condition) continue; . . . }
更多 C while 循环示例
示例:打印小写字母
以下程序借助 while 循环打印所有小写字母。
#include <stdio.h> int main(){ // 局部变量定义 char a = 'a'; // while 循环执行 while(a <= 'z') { printf("%c", a); a++; } printf(" End of loop"); return 0; }
输出
运行代码并检查其输出 −
abcdefghijklmnopqrstuvwxyz End of loop
示例:使两个变量相等
在下面的代码中,我们有两个变量"a"和"b",分别初始化为 10 和 0。在循环内部,每次迭代时,"b"都会递减,"a"都会递增。循环会重复执行,直到"a"和"b"不相等。当两者都达到 5 时,循环结束。
#include <stdio.h> int main(){ // 局部变量定义 int a = 10, b = 0; // while 循环执行 while(a != b){ a--; b++; printf("a: %d b: %d ", a,b); } printf(" End of loop"); return 0; }
输出
运行此代码时,将产生以下输出 -
a: 9 b: 1 a: 8 b: 2 a: 7 b: 3 a: 6 b: 4 a: 5 b: 5 End of loop
while 与 do while 循环
do-while 循环在大多数情况下与 while 循环类似,尽管其语法有所不同。do-while 循环被称为 退出验证循环。在某些情况下,它们的行为有所不同。while 和 do-while 循环之间的区别将在本教程的 do-while 章节中解释。