2

我有这个代码

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

int main(){
int a = 5;
{
    int b = 6;
}
printf("%d %d", a, b);
return 0;
}

我试图看看使用块会如何影响这一点,但程序不起作用。说 b 未声明,这是给我的例子。有谁知道出了什么问题?或者这是否有可能会抛出我和错误,因为当 printf 不存在时 int b 在块内被声明和初始化?

4

1 回答 1

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;
}

b在您尝试在块外打印它的地方,这有一个范围。它不在块b ,但您会在打印结果时发现:

In block: 5 6
Ex block: 5 42
于 2013-03-13T02:56:25.607 回答