4.1.3 复合语句

复合语句是用一对花括号“{}”将若干语句组合在一起而构成的语句。复合语句在程序中是很重要的一种结构,常用于将多个语句组合起来以完成特定的功能。复合语句的程序示例如下。


include<stdio.h>//头文件

void main()//主函数

{

int a=11,b=22;//声明变量

printf(“a=%d,b=%d\n”,a,b);//输出结果

{//复合语句,用于执行平反运算

int a2,b2;

a2=a*a;//表达式语句

b2=b*b;

printf(“a^2=%d,b^2=%d\n”,a2,b2);//输出结果

}

{//复合语句,局部变量演示

int a,b;//声明局部变量

a=23;b=-17;//变量赋值

a=a+b;//表达式语句

b=10-b;

printf(“a=%d,b=%d\n”,a,b);//输出局部变量结果

}

printf(“a=%d,b=%d\n”,a,b);//输出结果

}


该程序可以在KeilµVision3编译环境中执行,其运行的结果如下所示。


a=11,b=22

a^2=121,b^2=484

a=6,b=27

a=11,b=22


本例中,由于程序总是由main函数开始执行,在主函数中定义并初始化变量a和b,其作用范围为整个main函数。第一个复合语句用来计算变量a和b的平反值并输出。第二个复合语句演示了局部变量的使用,其中定义了局部变量a和b,由于其作用域为该复合语句内部,因此不会和前面定义的变量相冲突。从本程序可以看出处于不同位置的变量之间的变量作用域的区别。

在程序中使用复合语句时,要注意以下几点。

❑复合语句内部简单语句的结尾仍要有分号,但是复合语句的构成符“{”和“}”之后均不能有分号。

❑C51语言中,复合语句在语法上等同于一条语句。在程序运行时,复合语句“{}”中的各行单语句是依次顺序执行的。

❑在C51中复合语句可以嵌套使用。复合语句中的语句可以是简单语句,也可以是复合语句,即在“{}”中还可以再有“{}”。这样形成的层次结构原则上可以无限地扩大。

❑复合语句中不但可以由可执行语句组成,还可以用变量定义等语句组成。在复合语句中所定义的变量,称为“局部变量”,其变量作用域只在复合语句内部。

❑函数体本身也是一个复合语句,函数内定义的变量的变量作用域只在函数内部。

❑典型的复合语句还有由if、else、for等构成的语句。

技巧每一个复合语句使用一个TAB缩进,复合语句的大括号放在新的一行,单独成一行,便于检查源程序时“{}”相匹配。