在C中使用块

She*_*kie 2 c block

我有这个代码

#include <stdio.h>
#include <stdlib.h>

int main(){
int a = 5;
{
    int b = 6;
}
printf("%d %d", a, b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我试图看看如何使用块会影响这个但程序不起作用.说b是未宣布的,这是我给出的例子.谁知道什么是错的?或者有可能这是假设抛出我并且错误,因为当printf不在那里时int块被声明并初始化在块中?

pax*_*blo 8

是的,b 在您尝试打印它未申报.它的范围从它的创建延伸到它的块的末尾,这是之前的结束printf.

也许你的意思是这样的:

#include <stdio.h>
#include <stdlib.h>

int main (void) {
    int a = 5;
    int b = 42;  // <<-- Look here! Yes, you! Right here! :-)
    {
        int b = 6;
        printf ("In block: %d %d\n", a, b);
    }
    printf ("Ex block: %d %d\n", a, b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这有一个b范围,你尝试在块外打印它.它不是b ,但你会发现结果打印时:

In block: 5 6
Ex block: 5 42
Run Code Online (Sandbox Code Playgroud)