曾经在BBS上有朋友问过我{}是什么意思?什么作用?在C中是有不少的括号,如{},[],()等,确实会让一些初入门的朋友不解。在VB等一些语言中同一个()号会有不同的作用,它可以用于组合若干条语句形成功能块,可以用做数组的下标等,而在C中括号的分工较为明显,{}号是用于将若干条语句组合在一起形成一种功能块,这种由若干条语句组合而成的语句就叫复合语句。复合语句之间用{}分隔,而它内部的各条语句还是需要以分号""结束。复合语句是允许嵌套的,也是就是在{}中的{}也是复合语句。复合语句在程序运行时,{}中的各行单语句是依次顺序执行的。以C语言中可以将复合语句视为一条单语句,也就是说在语法上等同于一条单语句。对于一个函数而言,函数体就是一个复合语句,也许大家会因此知道复合语句中不单可以用可执行语句组成,还可以用变量定义语句组成。要注意的是在复合语句中所定义的变量,称为局部变量,所谓局部变量就是指它的有效范围只在复合语句中,而函数也算是复合语句,所以函数内定义的变量有效范围也只在函数内部。关于局部变量和全局变量的具体用法会在说到函数时具体说明。下面用一段简单的例子简单说明复合语句和局部变量的使用。 void main(void) SCON = 0x50//串口方式1,允许接收 a = 5 while(1) 运行结果: 结合以上的说明想想为何结果会是这样。
#include
#include
{
unsigned int a,b,c,d//这个定义会在整个main函数中?
TMOD = 0x20//定时器1定时方式2
TH1 = 0xE8//11.0592MHz 1200波特率
TL1 = 0xE8
TI = 1
TR1 = 1//启动定时器
b = 6
c = 7
d = 8//这会在整个函数有效
printf("0: %d,%d,%d,%d\n",a,b,c,d)
{ //复合语句1
unsigned int a,e//只在复合语句1中有效
a = 10,e = 100
printf("1: %d,%d,%d,%d,%d\n",a,b,c,d,e)
{ //复合语句2
unsigned int b,f//只在复合语句2中有效
b = 11,f = 200
printf("2: %d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f)
}//复合语句2结束
printf("1: %d,%d,%d,%d,%d\n",a,b,c,d,e)
}//复合语句1结束
printf("0: %d,%d,%d,%d\n",a,b,c,d)
}
0:5,6,7,8
1: 10,6,7,8,100
2: 10,11,7,8,100,200
1: 10,6,7,8,100
0:5,6,7,8
示例程序下载