| 本帖最后由 远人 于 2014-3-20 12:17 编辑 
 下面是老师讲解的“变量在代码块中的作用域”的一段代码(中文注释是根据老师讲解我理解做的笔记,也好让大家理解我的思路):
 
 #include <stdio.h>
 
 int main(int argc, const char * argv[])
 {
 /*{
 int a = 10;//这里的代码块只能在这个{}中有效使用,其作用域是不能逃出此{}
 }//这个}执行代表这块{}函数执行完毕,将在内存中消失
 printf("a = %d",a);//所以这里的printf函数不能使用变量a
 */
 int  score = 100;
 
 {
 int score = 200;
 {
 score = 50;
 }
 printf("score = %d",score);//这里能调用外面的score变量(注释此代码块中的int score=200做实验),但是因为代码块存在,所以这里的printf输出采取就近原则,而不是给score赋值两次,(如果赋值两次,那么第二个printf输出也是200,但结果是100,充分证明了代码块中的就近原则)
 }
 
 printf("score = %d",score);
 return 0;
 }
 在代码块中再次加入代码块{ score = 50  }之后,为什么这里的score的值能修改这个代码块之外的score的值,导致最终输出结果是score = 50 ,score = 100  ;  而不是score = 200 , score = 100?
 
 |