在 C 语言中,while 语句是一种先判断后执行的循环控制结构,用于根据条件重复执行一段代码块。以下是其规则与简介:
基本语法
c
运行
while (条件表达式) {
// 循环体(需要重复执行的语句)
}
- 条件表达式:必须是一个可计算为 “真”(非 0)或 “假”(0)的表达式(C 语言中没有专门的布尔类型,用 0 表示假,非 0 表示真)。
- 循环体:可以是单条语句或用
{}包裹的复合语句(推荐始终用{}明确范围,避免逻辑错误)。
核心规则
-
执行流程:
- 先判断 “条件表达式”:若结果为非 0(真) ,则执行循环体;
- 循环体执行完毕后,再次回到条件判断,重复上述过程;
- 若条件为0(假) ,则跳出循环,执行后续代码。
简言之:先判断,再执行,条件不满足则直接退出。
-
循环体的要求:
- 若循环体包含多条语句,必须用
{}包裹成复合语句; - 若只有单条语句,
{}可省略,但可读性差,不推荐。
- 若循环体包含多条语句,必须用
-
避免死循环:
循环体内必须包含改变条件的语句(如变量自增 i++、输入更新等),否则条件可能永远为真,导致循环无限执行(死循环)。例:死循环(无退出条件):
死循环示例:
#include <stdio.h>
/*
while 循环
1. 死循环。while(表达式) 表达式一直为true,循环一直执行
*/
int main() {
while(1){
printf("hello world!");
}
return 0;
}
输出
案例
#include <stdio.h>
int main() {
// 输入一个年份,判断是否闰年?
// 如果输入的是0,就结束
while(1){
int year;
printf("\n请输入要判断的年份(0表示退出):");
scanf("%d", &year);
if(year == 0){
break;
}
if ((year%100!=0 && year%4==0) || year%400==0) {
printf("%d 是闰年\n", year);
} else {
printf("%d 不是闰年\n", year);
}
}
printf("\n下次再来吧~");
return 0;
}
}
输出
while语句示例:
普通循环
#include <stdio.h>
int main(){
int i = 0;
while(i<3000){
printf(" %d ,I miss you\n",i+1);
i++;
}
return 0;
}
输出
while求累加
#include <stdio.h>
int main() {
int s = 0;
int i = 1;
while (i <= 100) {
printf("%d \n", i);
s += i;
i++;
}
printf("%d \n", s);
return 0;
}
输出
适用场景
while 循环适合循环次数不确定的场景,即循环是否继续依赖动态条件(如用户输入、文件读取结束标志等)。例如:
- 读取用户输入直到输入特定字符(如
'q'退出); - 处理链表节点直到指针为
NULL; - 等待某个事件发生(如传感器数据达标)。
与其他循环的区别
- 与
for循环相比:for更适合已知循环次数的场景(初始化、条件、更新在同一行),while更灵活,适合条件动态变化的场景。 - 与
do-while循环相比:do-while是 “先执行后判断”(至少执行一次),而while可能一次都不执行(若初始条件为假)。
掌握 while 循环的核心是控制条件的变化,确保循环能在合理时机退出。