• C Primer Plus(6) 中文版 第6章 C控制语句:循环 6.2 while语句


    6.2 while语句
    while循环的通用形式如下:
    while( expression )
        statement
    statement部分是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。
    expression可以使用任何表达式。如果expression为真(或者更一般地说,非零),执行statement部分一次,然后再次判断expression。在expression为假(0)之前,循环的判断和执行一直重复执行。每次循环都被称为一次迭代(iterator)。
    6.2.1 终止while循环
    while循环有一点非常重要:在构建while循环时,必须让测试表达式的值有所变化,表达式最终要为假。否则,循环就不会终止(实际上可以用break和if语句来终止循环)。
    最小负值减1一般会得到最大值,最大值加1一般会得到最小值。 
    6.2.2 何时终止循环
    要明确一点:只有在对测试条件求值时,才决定是终止还是继续循环。
    // when.c -- when a loop quits
    #include
    int main(void)
    {
        int n = 5;
        
        while (n < 7)                    // line 7
        {
            printf("n = %d\n", n);
            n++;                         // line 10
            printf("Now n = %d\n", n);   // line 11
        }
        printf("The loop has finished.\n");
        
        return 0;

    /* 输出:

    */

    6.2.3 while:入口条件循环
    所谓“有条件”指的是语句部分的执行取决于测试表达式描述的条件。该表达式是一个入口条件(entry condition),因为必须满足条件才能进入循环体。
    6.2.4 语法要点
    使用while时,要牢记一点:只有在测试条件后面的单独语句(简单语句或复合语句)才是循环部分。
    缩进是为了让读者阅读方便,不是计算机的要求。
    /* while1.c -- watch your braces       */
    /* bad coding creates an infinite loop */
    #include
    int main(void)
    {
        int n = 0;
        
        while (n < 3)
            printf("n is %d\n", n);
        n++;
        printf("That's all this program does\n");
        
        return 0;
    }

    这是一个无限循环(infinite loop),除非强行关闭程序,不然没有外部干涉就不会退出。
    记住,即使while语句本身使用复合语句,在语句构成上,它也是一条单独的语句。该语句从while开始执行,到第1个分号结束。在使用了复合语句的情况下,到右花括号结束。
    要注意放置分号的位置。 
    /* while2.c -- watch your semicolons */
    #include
    int main(void)
    {
        int n = 0;
        
        while (n++ < 3);             /* line 7 */
        printf("n is %d\n", n);  /* line 8 */
        printf("That's all this program does.\n");
        
        return 0;

    /* 输出:

    */

    测试条件后面的单独分号是空语句(null statement),它什么也不做。在C语言中,单独的分号表示空语句。有时,程序员会故意使用带空语句的while语句,因为所有的任务都在测试条件中完成了,不需要在循环体中做什么。
    while( scanf( "%d", &num ) == 1 )
        ;/*跳过整数输入*/
    注意,为了提高代码的可读性,应该让这个分号单独占一行,不要直接把它放在测试表达式同行。这样做一方面让读者更容易看到空语句,一方面也提醒自己和读者空语句是有意而为之。处理这种情况更好的方法是使用下一章介绍的continue语句。

  • 相关阅读:
    弘辽科技:抖音,正在抛弃张同学
    程序员必须知道的八件事
    SA实战 ·《SpringCloud Alibaba实战》专栏开篇
    景联文科技:高质量AI数据标注助力大语言模型训练,推动人工智能落地应用
    Mybatis映射文件概述与增删改查操作
    报道 | 8月国际运筹优化会议汇总
    iMazing最新版2.16.1Apple设备管理器功能介绍
    Python零基础速成班-第19讲-Python 3.6到3.10新特性简介
    〔021〕Stable Diffusion 之 提示词反推、自动补全、中文输入 篇
    码农的转型之路-PLC异地组网与远程控制
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/126197987