c语言的while语句

139 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

while循环的通用形式如下:

while(expression)
   statement

statement部分可以是以分号结尾的简单语句,可以是用花括号括起来的复合语句。下面是while的相关。

终止while循环

while循环有一点非常重要:在构建while循环时,必须让测试表达式的值有变化,表达式最终要为假。否则,循环就不会终止(也可以用break和if来终止,后面介绍)。例如下面句子:

index =1;
while(index<5)
printf("Good morning!\n");

上面的程序段将打印无数次Good morning!。因为循环中的index的值都是原来的值1,不曾变过。现在,考虑下面的程序段:

index =1;
while(--index<5)
printf("Good morning!\n");

这样的写法也是不建议的。虽然改变了index的值,但是改错了!但是这个版本至少在index减少到其类型到可容纳的最小负值并变成最大正值时会终止循环。

什么时候终止循环

我们要明确,只有在对测试条件求值时,才决定是终止还是继续循环。例如下面程序:

#include <stdio.h>
void pound(int n);  
int main(){
    int n=5;
    while(n<7)  //第7行
    {
        printf("n=%d\n",n);
        n++;   //第10行
        printf("Now n = %d\n",n);
    }
    printf("The loop has finished.\n");
    return 0;
}

运算结果

Snipaste_2022-08-15_21-50-37.png

在第2次循环时,变量n在在第10行首次获得值7.但是,此时程序并未退出,它结束本次循环,并对第7行的测试条件求值才退出循环。

while:入口条件循环

while循环是使用入口条件的有条件循环。所谓“有条件”指的是语句部分的执行取决于测试表达式描述的条件,例如index<5。该表达式是一个入口条件,因为必须满足条件才能进入循环体。在下面的情况中,就不会进入循环体,因为条件一开始就为假:

index=10;   
while(index++<5)
printf("Have a fair day or better.\n");

index=10; 换成 index=3; 就可以运行循环。