代码一:
int a = 111;
{
a = 100;
{
a = 222;
printf("a=%d\n",a);
}
printf("a=%d\n",a);
}
printf("a=%d\n",a);
代码二:int a = 111;
{
int a = 100;
{
int a = 222;
printf("a=%d\n",a);
}
printf("a=%d\n",a);
}
printf("a=%d\n",a);
你这两个代码的区别在于第三行,第一段代码是 a = 100; 第二段代码是 int a = 100; 这意义就不一样了。
首先第一段代码中 a = 100; 它会去找最近的 a ,可是在第三行前面只有一个 int a = 111; 所以,它会把你一开始设置的 a = 111 改成 a = 100 所以第三个printf输出的时候是100。而第二段代码是临时又声明了一个a 这时,它就不会向上去寻找 a 变量了。所以第三个printf输出的时候是111。