你能用C做裸块吗?

Ben*_*Ben 2 c

我知道在C#和JavaScript中,以下内容完全有效:

{
  var foo;
}
Run Code Online (Sandbox Code Playgroud)

是否有一个在C中有效的裸块?

即这是有效的C?

{
  int foo;
}
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 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
Run Code Online (Sandbox Code Playgroud)

复合语句本身就是C 语句.

例如,此块是有效块:

{
    {
        {
            printf("Hello world");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

即便是这个也是有效的:

{{{}}}
Run Code Online (Sandbox Code Playgroud)

{} 是一个空的复合语句.

  • 因为它是一个可以由多个语句组成的语句. (2认同)

Riz*_*123 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;

}
Run Code Online (Sandbox Code Playgroud)