我知道在C#和JavaScript中,以下内容完全有效:
{
var foo;
}
Run Code Online (Sandbox Code Playgroud)
是否有一个在C中有效的裸块?
即这是有效的C?
{
int foo;
}
Run Code Online (Sandbox Code Playgroud)
这在C中也有效吗?
是的,它是,它被称为复合语句.
从C11标准:
6.8.2 Compound statement
Syntax
1 compound-statement:
{ block-item-listopt }
block-item-list:
block-item
block-item-list block-item
block-item:
declaration
statement
Run Code Online (Sandbox Code Playgroud)
复合语句本身就是C 语句.
例如,此块是有效块:
{
{
{
printf("Hello world");
}
}
}
Run Code Online (Sandbox Code Playgroud)
即便是这个也是有效的:
{{{}}}
Run Code Online (Sandbox Code Playgroud)
{} 是一个空的复合语句.
是的,它完全没问题!
举个例子:
#include <stdio.h>
int main() {
{
int i = 5; //If you declare i outside you can use both print statements
printf("%d", i);
}
//printf("%d", i); Note that i is out of scope here
return 0;
}
Run Code Online (Sandbox Code Playgroud)