A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include <stdio.h>

int main()
{
    int a = 20;           
    int score = a + 100;  
    printf("%d\n", score);
   
    {
        int score = 50;
        {
            score = 10;
            printf("%d\n", score) ;
        }
        a = 10;
    }
   
    {
        score = a + 250;
        int score = 30;
        printf("%d", score);
    }
   
    printf("%d\n", score);
    return 0;
}

12 个回复

倒序浏览
是不是120,10,30,120??
回复 使用道具 举报
这个是代码块的问题,在c语言基础视频里有详细的讲到。。。
回复 使用道具 举报
执念 发表于 2015-4-7 22:47
是不是120,10,30,120??

最后一个应该是260
回复 使用道具 举报
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int a = 20;//定义全局变量a,初始化值为20
  5.     int score = a + 100;//此处score 变量为全局变量
  6.     printf("%d\n", score);//输出变量就是上面定义的score变量的值也就是120,要换行
  7.    
  8.     {
  9.         int score = 50;//重新定义了score变量,至于为什么不报错,跟变量的作用域有关,可以参考学习,
  10.         {
  11.             score = 10;//这个score变量赋值,只是对最近的score变量赋值,也就是上面定义的那个初始化为50的变量score
  12.             printf("%d\n", score) ;//打印的值是最近的score的值,就是10,要换行
  13.         }
  14.         a = 10;//给全局变量a重新赋值为10,因为a为全局变量,并且在最近的大括号内没有定义局部变量a.所以更改的时全局变量a的值
  15.     }
  16.    
  17.     {
  18.         score = a + 250;//在最近的大括号内没有定义score和a变量,此处使用的都是全局变量的值,加起来以后就是260,此处更改的就是全局变量score的值,改为260
  19.         int score = 30;//定义一个新的局部变量score并赋值为30
  20.         printf("%d", score);//打印最近定义的score变量的值,就是30,不换行
  21.     }
  22.    
  23.     printf("%d\n", score);//打印全局变量的值,也就是向上数第三行(大括号除外)所更改的score的值.就是260,要换行
  24.     return 0;
  25. }
  26. //输出结果
  27. 120
  28. 10
  29. 30260

复制代码

这样注释,能看懂吗?如果还有疑问,可以说,大家一起学习~~~~
回复 使用道具 举报 2 0
流转少年 发表于 2015-4-7 23:20
这样注释,能看懂吗?如果还有疑问,可以说,大家一起学习~~~~

这个太赞了,
回复 使用道具 举报
鹏jiqing 来自手机 中级黑马 2015-4-8 00:11:05
7#
推荐好牛逼啊
回复 使用道具 举报
这种局部变量作用域的题很基础,只是看着绕,我只是想知道谁会写这么多相同的变量名还放的这么乱。。实际意义在哪?
回复 使用道具 举报
流转少年 发表于 2015-4-7 23:20
这样注释,能看懂吗?如果还有疑问,可以说,大家一起学习~~~~

讲的很详细,推荐给版主加技术分。
回复 使用道具 举报
其实简单来说,代码块问题就是就近原则
回复 使用道具 举报
bieny 发表于 2015-4-7 23:11
最后一个应该是260

是的,最后一个是260!
回复 使用道具 举报
流转少年 发表于 2015-4-7 23:20
这样注释,能看懂吗?如果还有疑问,可以说,大家一起学习~~~~

多谢大神解释,领教了{:3_57:}
回复 使用道具 举报
二楼好评
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马