复合语句是由若干条语句组合而成的一种语句,它是用一个大括号“{}”将若干条语句组合在一起而形成的一种功能块。复合语句不需要以分号“;”结束,但它内部的各条单语句仍需以分号“;”结束。复合语句的一般形式为:
复合语句在执行时,其中的各条单语句依次顺序执行。整个复合语句在语法上等价于一条单语句,因此在C语言程序中可以将复合语句视为一条单语句。复合语句允许嵌套,即在复合语句内部还可以包含别的复合语句。通常复合语句都出现在函数中,实际上,函数的执行部分(即函数体)就是一个复合语句。复合语句中的单语句一般是可执行语句,此外还可以是变量的定义语句(说明变量的数据类型)。
在复合语句内所定义的变量,称为该复合语句中的局部变量,它仅在当前这个复合语句中有效。利用复合语句将多条单语句组合在一起,以及在复合语句中进行局部变量定义是C语言的一个重要特征。
例2-12 复合语句及其局部变量的使用。
程序执行结果:
在这个程序的主函数体开始处,定义了变量a,b,c,d,它们在整个主函数体中都是有效的,在主函数体中的复合语句1和复合语句2中都可以使用它们。另外,在复合语句1中又定义了局部变量m和与主函数体中定义的变量同名的局部变量b,这种局部变量m和b仅在定义它的复合语句1中有效,而且局部变量m的优先级高于在主函数体中定义的同名的局部变量b。因此在复合语句1中执行printf函数输出的b值为8,而不是2。
同样,在复合语句2中定义了一个与主函数体中同名的局部变量c,在复合语句2中执行printf函数输出的c值为9,而不是3。一旦出了复合语句,则其中的局部变量立即失效。如果有同名的局部变量,则恢复该变量在上一层位置所定义的初值。读者可以通过仔细分析本程序的执行结果来弄清各个变量的作用范围。