![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
3.1 C语言的语句和程序的基本结构
3.1.1 语句的分类
前面提到过,一行C程序末尾加一个分号就构成一条语句。例如:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p61_85291.jpg?sign=1739282051-IzmwXVvbCjCRoEyldZjdokJ3wpwL7uqq-0-99a12e187275586d4008a2786a04aff7)
以上这些都是一些比较简单的语句,一个C程序从main函数开始,顺序从上往下执行各条语句。但C语言的语句不仅仅包含这些简单语句,还包含许多其他类型的语句,在此,有必要对这些语句进行分类。C语言中的语句一般分为如下5类。
(1)控制语句。能够控制程序的执行流程,例如在一定的条件下执行某些语句,在另外的条件下,不执行这些语句(而可能是去执行另外一些语句)。在C语言中有9种控制语句,不必死记硬背这些语句,后面会逐个讲到,如表3.1所示。
表3.1 9种控制语句
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-T61_85292.jpg?sign=1739282051-7W8rQBCX0wmmMWaQ7gYVNB7yNc4tkyvt-0-bf87917e62b7ccde939e928ad4424603)
(2)函数调用语句。由一个函数调用末尾加个分号构成的语句,例如:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p62_85306.jpg?sign=1739282051-ML8JL5CXQ09bjXPYnnaNR7RWPXnBFq2a-0-a4fc2285721533f576b502df3bcc54e5)
(3)表达式语句。由一个表达式构成的语句,例如:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p62_85307.jpg?sign=1739282051-1yFHRVO9sfNtLzDZl4jiMxUFYxl3I4PE-0-dd6170258964d2a6ffcd4ec983097cdc)
所以在C语言中,所谓语句,就是一个表达式末尾加一个分号,分号是语句中不可缺少的组成部分。再看看下面两行代码:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p62_85308.jpg?sign=1739282051-Tf77Ewqs1ItxObDtfQPFmFfnEqVPXxmJ-0-ae82dd0a63d5e14a87cf6ac36bc9b155)
(4)空语句。用一个分号表示,没有实际作用(什么也不做),但在语法上是合规的。例如:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p62_87663.jpg?sign=1739282051-xEDdQeRYoJEbwhUlSLKTdoBYNW3pvidD-0-cc17856e37f17b79ee634fcd54a00e0e)
如果在写代码的过程中需要一条语句来占位,而又不希望这条语句执行任何有意义的内容,用空语句占位是可以的,但一般情况下,空语句的用处不大。
(5)复合语句。用{}括起来的语句,这些语句会被当作一个整体看待。例如,后面讲到的一些条件语句中经常会用到{},代表着只要条件满足,{}里的所有语句都会执行,这就是{}在条件语句中的作用,后续会看到具体范例。当然,可以把一段代码单独用{}括起来,但这种写法一般用于测试等特殊用途,在实际项目代码中很少出现,因为单独用{}把一段代码括起来意义并不大。如下范例就是单独用{}括起来的一段代码:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p62_85309.jpg?sign=1739282051-Ub7DeF6jYh8jxH77njFHy3rQS3zZNfeV-0-7931e61aa817d2032c3204b22e5b0ccb)
此外,还有两件事情特别值得一提:
①C语言允许在一行中书写多条语句,每条语句都需要以分号结尾,笔者并不建议这样写代码,会使程序看上去不太清晰。看看如下范例:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p62_85311.jpg?sign=1739282051-qOFKZDWQXMi9fdEpkQdH0vdIW9SNQDuF-0-447923d90a9c9f0111a2039a86a8b21a)
②C语言允许一条语句拆开在多行书写。一般来说,宏定义中这种写法比较常见(后面章节会讲宏定义),或者当一行代码过长,不便阅读时采用这种书写策略,否则一般不需要将一条语句拆成多行书写,看上去比较凌乱。看看如下范例:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p63_85313.jpg?sign=1739282051-ZgzWE6JqDoH5NOjqES28GepCPzIGDA0D-0-380a641fb0b7bc121bfec9a6ecec4d27)