我知道在C#和JavaScript中,以下内容完全有效:
{
var foo;
}
在C中有一个裸块有效吗?
即。这是有效的C?
{
int foo;
}
答案 0 :(得分:7)
这在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
复合语句本身就是C中的语句。
例如,此块是有效块:
{
{
{
printf("Hello world");
}
}
}
即便是这个也是有效的:
{{{}}}
{}
是一个空的复合语句。
答案 1 :(得分:5)
是的,它完全没问题!
举个例子:
#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;
}