
4.2 语句块
语句块(block statement)是指用花括号括起来的语句和声明序列,也可以称为复合语句(compound statement)。语句块就像语文中的段落,语句块以花括号为标志,段落以开头空两格为标志。本节讲解语句块的构成与作用域的相关内容。
4.2.1 语句块的定义
语句块由两条或者两条以上的语句组成,并由一对花括号({})包含起来。在语法意义上其相当于一条语句,但是在结尾处不添加分号。其语法形式如下。

如果在程序的某些地方需要一条语句,但是在逻辑上又需要多条语句,此时就适合使用语句块,将多条语句合并为一条语句使用。例如,卸载一车货物可以挣到1000元,雇用一个人可以卸载完成,但是为了加快速度,此时可以雇用一个小队的成员在半小时内卸载完成。一个人就是一条语句,一个小队就是多条语句。
注意:语句块的花括号中也可以没有任何语句,称为空语句块,其作用与空语句类似。
4.2.2 变量的作用域
变量的作用域是指变量有意义的范围。变量的作用域与语句块的花括号有直接关系。变量的作用域由其声明开始到其所在的语句块结束为止。
变量就像一个人,当在工作单位时就是员工,在学校时就是学生,回到家就是父亲。在不同的位置范围,其代表的含义不同。
【示例4-1】下面输出相同名字不同作用域变量的值。

程序运行结果如下。

从运行结果中可以看出,两个a虽然名字相同,但是其值却不同,并且它们之间不会相互干扰,只在自己的作用域中有效。两个变量a的作用域如图4.1所示。

图4.1 两个变量a的作用域
在图中外层花括号变量a的作用域不包含内层花括号的范围。同时,变量在同一作用域范围内(一对花括号范围内)是不可以声明两次的。
另外,如果在代码中头文件处添加using namespace std命名空间,可以让代码中std:: cin、std::cout与std::endl写为cin、cout与endl,这样在后续的代码中使用输入/输出时更加简便。简单理解就是将多次使用多次引用,改为引用一次多次使用。在后续讲解的代码中将以这种形式使用输入/输出。代码修改后如下所示。
