• 【C语言基础】Chap. 5. 语句基础


    1. 各类语句

    C语言是结构化的程序设计语言,而结构化指的是现实世界事物发展逻辑的抽象,即顺序结构、选择结构和循环结构。

    C语言的大多数语句属于以下3大类。

    • 分支语句

    • 循环语句

    • 跳转语句

    此外还有复合语句(compound statement,把几条语句组合成一条语句)和空语句(void statement,不执行任何操作)。

    学习这些语句之前需要了解是语句什么。

    语句是程序运行时执行的命令。C语言规定每条语句都要以分号结尾(但也存在少许例外),因为语句可以连续占用多行,需要用分号来确定其结束位置——而指令通常只占用一行,因此不需要分号结尾。

    因此可以简单理解为:在C语言中,由一个分号;隔开的就是一条语句。

    2. 分支语句/选择语句

    在一组可选项中选择一条特定的执行路径的语句,称为分支语句/选择语句(selection statement)。

    2.1 if语句

    语法结构如下:

    1. 第一种:
    2. if(表达式)
    3. 语句;
    4. 第二种:
    5. if(表达式)
    6. 语句1;
    7. else
    8. 语句2;
    9. 第三种(多分支/级联式):
    10. if(表达式1)
    11. 语句1;
    12. else if(表达式2)
    13. 语句2;
    14. else
    15. 语句2;

    当表达式结果为真时,其对应的分支就会执行。

    那么C语言中如何表达真假呢?在C89规范中,非0就是真(包括-1等负数),0就是假。

    C99中提供了_Bool型和能够提供bool宏的头,但由于本文主要讲C89规范,因此先不进行讲解。实际上,C99中的truefalse也只是使用了无符号整型的10而已。)

    因此括号中的表达式可以使用各种语句,包括关系操作符等来计算。

    补充1

    • 级联式if语句不是新的语句类型,而是普通的if语句,只不过碰巧有另外一条if语句作为else下的子句。

    • 如果要一个分支下要执行多条语句,则应该使用代码块{}来组成复合语句。

    注意:代码块{}后不需要加分号;

    补充2:悬空else问题


     

    1. int a = 0;
    2. int b = 2;
    3. if (a == 1)
    4. if (b == 2)
    5. printf("yes\n");
    6. else
    7. printf("no\n");

    上面这段代码的else对应的是哪个if呢?

    C语言遵循的规则是,else子句应该属于离它最近的且还未和其他else匹配的if语句。

    因此这里的else会被判断为第二个if语句的分支。

    这表明,想要使分支语句有清晰的逻辑和结构,则最好加上代码块{}

    另外,某些if...else...表达式可以被条件表达式(三元操作符)替代。

    2.2 switch语句

    2.2.1 介绍

    switch也是一种分支语句,常常用于多分支的情况,比如将表达式和一系列值进行比较,从中找出当前匹配的值。

    其结构为:

    1. switch(整型表达式) //注意,这里必须是 整型,int long 甚至 char 都行,但 float 不可以
    2. {
    3. 语句项;
    4. }

    语句项里是一些case语句,如下:

  • 相关阅读:
    Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
    SpringCloudAlibaba 综合项目实战工业级PaaS云平台第六课 微服务治理、paas和devops
    分发饼干(贪心算法+图解)
    label-preserving transformations
    ResNet网络的改进版:ResNeXt
    Git和SVN有什么区别?
    R语言作业wine 数据
    hash表
    解决国产机SVN连接失败的问题
    RK3588移植-ffmpeg交叉编译
  • 原文地址:https://blog.csdn.net/m0_73088370/article/details/126622511