3.1.2 复合语句
教学录像:光盘\TM\lx\3\复合语句.exe
复合语句也称为语句块,它是由“{”和“}”符号以及多条语句所构成的。在开发程序时,单一的一条语句不能完成一项逻辑功能,通常要将多条语句组合为复合语句来实现。例如:
- 01 if (x > y)
- 02 { //开始一条复合语句
- 03 cout<<"x大于y\n";
- 04 cout<<"表达式的值为真\n";
- 05 } //复合语句结束
- 06 else
- 07 { //开始一条复合语句
- 08 cout<<"x不大于y\n";
- 09 cout<<"表达式的值为假\n";
- 10 } //复合语句结束
在使用“{”和“}”符号设计复合语句时,复合语句中也可以不包含代码,此时的复合语句与空语句的作用是相同的。例如:- {}
上述代码定义了一个空的复合语句,在程序中可以使用空复合语句来代替空语句。在使用复合语句时,需要注意“}”符号之后没有分号。下面的复合语句是非法的。- 01 {
- 02 cout<<"x大于y\n";
- 03 cout<<"表达式的值为真\n";
- 04 };
在使用复合语句时,需要注意的是在复合语句中定义的变量,其作用域的范围应在当前定义变量处到复合语句的结束处。分析下面的代码: - 05 { //复合语句开始
- 06 int ivar = 1; //定义一个整型变量
- 07 } //复合语句结束
- 08 cout<<ivar; //错误的代码,ivar没有标识
在上述代码中,在复合语句中定义了变量ivar,但是在复合语句之外访问了变量ivar,因此会出现编译错误。如果将上述代码修改为如下形式,则不会出现编译错误。 - 01 int ivar = 0; //定义一个整型变量ivar,初始化为0
- 02 {
- 03 int ivar = 1; //定义一个整型变量ivar,初始化为1
- 04 cout<<ivar; //输出语句
- 05 }
- 06 cout<<ivar; //输出语句
在上述代码中,定义了两个同名的整型变量ivar,其中在复合语句中输出的ivar值为1,在复合语句之外输出的ivar值为0。在复合语句内部定义了与外部同名的变量时,其复合语句内部的变量将会取代外部的变量。
复合语句是可以嵌套的。观察如下代码:
- 01 int ivar = 0; //定义一个整型变量ivar,初始化为0
- 02 { //外层复合语句
- 03 int ivar = 1; //定义一个整型变量ivar,初始化为1
- 04 { //内层复合语句
- 05 ivar = 2; //设置ivar的值为2
- 06 cout<<ivar; //内层复合语句输出ivar
- 07 }
- 08 }
- 09 cout<<ivar; //输出ivar
在上面的代码中,内层复合语句输出的ivar值为2,而复合语句之外的输出语句输出的ivar值为0。对于内层嵌套的复合语句来说,它访问的变量是外层复合语句中定义的变量ivar(其值初始化为1)。
试一试:把以上程序段补充完整,并上机调试运行。