复合语句 (C)

复合语句(也称为“块”)通常显示为另一语句的主体,如 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的复合语句中声明,则不允许分配存储,并且不允许初始化。 声明引用在其他位置定义的外部变量或函数。

使用 autoregister 关键字在块中声明的变量将重新分配,并在必要时在每次输入复合语句时初始化。 退出复合语句后,不再定义这些变量。 如果在块内声明的 static 变量具有该属性,则当程序执行开始并在整个程序中保留其值时,将初始化该变量。 有关相关信息static,请参阅存储类

此示例演示复合语句:

if ( i > 0 )
{
    line[i] = x;
    x++;
    i--;
}

在此示例中,如果 i 大于 0,则按顺序执行复合语句中的所有语句。

另请参阅

语句