
3.3 语句
在3.2节中介绍了表达式,读者都知道表达式是由运算符和常量、变量构成的,而本节要介绍的语句就是由表达式来构成的。一般说来,C++语句和表达式并没有严格区分。一个表达式,加上一个分号后,便直接形成语句。例如,算术表达式3+2,为其加上分号,写成如下形式:


这就是语句了。计算机可以执行该语句,但它并不改变程序的运行逻辑。当然,这条语句并没有实际意义。当一些表达式组合起来,完成某一相对完整的功能后,再加一个分号表示结束,这就组成一条语句。如下面的语句:

这就是一条赋值语句,它改变了a的值。
3.3.1 语句中的空格
在前面的示例中,读者接触到了许多简单的程序,其中包含很多语句。读者可能也注意到了,程序段中的语句并不是全部顶格对齐的,在语句中包含了很多空格。
【范例3-10】语句中存在部分空格,保证程序的可读性。该范例是一个简单地比较两个变量大小的程序,输出其中大的一个,实现代码如代码清单3-10所示。
代码清单3-10

【运行结果】在Visual C++中,编译器系统将自动给某些语句留出一定的空格,读者在编辑区中输入代码即可发现。运行上述程序,其结果如图3-11所示。

图3-11 比较大小的结果
【范例解析】从范例3-10代码中,读者可以看出,其语句之间存在着许多的空格,每条语句并不都是对齐的,而是参差不齐的。这在程序中是非常必要的,这样才能使得程序的结构更加清晰,从而提高程序的可读性。如果所有语句都是排列整齐的,那么会给阅读该程序的用户带来很大困难。
此外,在一条语句之间也存在空格,如if(a>b)语句,if关键字和(a>b)表达式之间含有空格,这都是为了提高程序的可读性而做的。
注意
在语句之间和语句内含有一定的空格,是养成良好的编程风格的重要方面,这样的程序可提高程序的可读性。
3.3.2 空语句
前面使用较多的都是表达式语句,即一个表达式加上一个分号组成。除此之外,语句也可以直接是一个分号,这种语句称为空语句。空语句仅由一个分号组成,不进行任何操作。一般用于语法上要求有一条语句但实际没有任何操作的场合。例如下列语句中:

for循环中没有进行任何操作,而只是起到延时的作用。一般情况下,除非为了调试程序方便,否则写一句空语句也是多余的。
3.3.3 声明语句
变量的声明语句在前面程序段中已经使用很多了,其主要作用是完成指定变量的定义。声明语句的基本格式如下:

在用声明语句声明变量时,既可以一条语句只声明一个变量,也可以在一条语句中声明多个变量,例如:

提示
上面这两种形式的声明语句都是允许的。然而需要读者注意的是,当在一条语句中声明多个变量时,声明变量的数据类型必须一致,也就是说,不允许在一条语句中声明多个数据类型不一样的变量。
此外,在声明变量的同时,可以和赋值语句结合起来为变量赋初值,这在前面范例中也使用得较多。例如:

这些写法在声明语句中都是允许的,这是为了在定义变量时同时对其初始化。
3.3.4 赋值语句
与声明语句不同,赋值语句实现为指定变量获得指定值的操作。例如:

如上程序代码所示,使用赋值语句给变量赋值时,右值(等号右边的值)可以是一个简单的常数或变量,也可以是一个表达式。
在C++中,赋值语句可以使用连等,例如:

执行这行语句时,先将10赋值给变量b,然后将b中的值赋给a,结果a和b的值都是10。此外,赋值语句右边还可以是赋值语句。
本节介绍了几种常用的语句,在后续章节中还将介绍C++的流程控制语句,C++程序就是由一行行语句组成的。