复合语句(compound statement)简称为语句块,它使用大括号把许多语句和声明组合到一起,形成单条语句。语句块与简单的语句不同,语句块不用分号当作结尾。
用括号{}括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句,例如:
{
x=y+z;
a=b+c;
printf(“%d%d”,x,a);
}
就是一条复合语句。
复合语句的作用:
1、作为分支和循环的块;
2、作为标识符的作用域。
C语言中可以将复合语句视为一条单语句,也就是说在语法上等同于一条单语句。——对于一个函数而言,函数体就是一个复合语句,也许大家会因此知道复合语句中不单可以用可执行语句组成,还可以用变量定义语句组成。——要注意的是在复合语句中所定义的变量,称为局部变量,所谓局部变量就是指它的有效范围只在复合语句中,而函数也算是复合语句,所以函数内定义的变量有效范围也只在函数内部
#include <stdio.h> void pp(void) { printf(" {}里是函数体的定义,这里是复合语句,执行顺序是按条执行\n "); } main() //main的两个{}中也算复合语句,{}中定义的变量,只能在当前的{}中起作用 { pp(); //复合语句嵌套使用 { unsigned int a=0,b=3; printf("a= %d, b= %d \n",a,b); } unsigned int a=5,b=4; //因为前面定义过的,只在其自己的{}中起作用,所以不会影响到后面其{}之外的定义了。 printf("a= %d, b= %d \n",a,b); }
将"unsigned int a=5,b=4; //因为前面定义过的,只在其自己的{}中起作用,所以不会影响到后面其{}之外的定义了。"这一行注释,看看有错误提示,理解复合语句范围限制,特别是对变量的范围的限制