我有这段代码
#include <stdio.h>
#include <stdlib.h>
int main(){
int a = 5;
{
int b = 6;
}
printf("%d %d", a, b);
return 0;
}
我试图看看如何使用块会影响这个但程序不起作用。说b是未宣布的,这是我给出的例子。谁知道什么是错的?或者有可能这是假设抛出我并且错误,因为当printf不在那里时int块被声明并初始化在块中?
答案 0 :(得分: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