复合语句(也称为“块”)通常显示为另一语句的主体,如 if 语句。
声明和类型 描述可出现在复合语句的头的声明的形式和含义。
语法
compound-statement:
{
declaration-list
选择statement-list选择}
declaration-list:
declaration
declaration-list
declaration
statement-list:
statement
statement-list
statement
如果有声明,它们必须位于任何语句之前。 复合语句开头声明的每个标识符的范围从其声明点扩展到块的末尾。 除非内部块中存在相同标识符的声明,否则它在整个块中可见。
复合语句中的标识符是假定auto的,除非显式声明registerstatic,否则extern除函数外,只能extern声明。 可以在函数声明中离开 extern 说明符,并且该函数仍将是 extern。
如果变量或函数在具有存储类 extern的复合语句中声明,则不允许分配存储,并且不允许初始化。 声明引用在其他位置定义的外部变量或函数。
使用 auto 或 register 关键字在块中声明的变量将重新分配,并在必要时在每次输入复合语句时初始化。 退出复合语句后,不再定义这些变量。 如果在块内声明的 static 变量具有该属性,则当程序执行开始并在整个程序中保留其值时,将初始化该变量。 有关相关信息static,请参阅存储类。
此示例演示复合语句:
if ( i > 0 )
{
line[i] = x;
x++;
i--;
}
在此示例中,如果 i 大于 0,则按顺序执行复合语句中的所有语句。