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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 龙瑞麟 于 2015-5-11 01:28 编辑

请大家帮忙分析一下这到题,主要是最后面的那一个260是怎么来得
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 20;
  5.     int score = a + 100;
  6.     printf("%d\n", score);//--->120
  7.     {
  8.         int score = 50;
  9.         {
  10.             score = 10;
  11.             printf("%d\n", score);//---->10
  12.         }
  13.         a = 10;
  14.     }
  15.     {
  16.         score = a + 250;
  17.         int score = 30;
  18.         printf("%d\n", score);//---->30
  19.     }
  20.     printf("%d\n", score);
  21.     return 0;
  22. }
复制代码

21 个回复

正序浏览
今天刚遇到  主要就是找到 int 等  如果这个程序块中没有定义就说明要保留数据  有的话 就会随着程序块结束而清除
回复 使用道具 举报
260啊,这道题我在论坛看到好多遍了,答案都记下来了
回复 使用道具 举报
括号都是在main函数中的,对定义变量不起什么作用~~~
回复 使用道具 举报
学习学习!
回复 使用道具 举报
holfioo 来自手机 中级黑马 2015-5-14 11:09:16
18#
图解释很透彻。。又学习了一遍。
回复 使用道具 举报
执行完第13行,第4行定义的a变为10;执行完16行,第5行定义的score变为260;给第17行定义的score赋值并不会对外面score的值有影响,在19行的“}”执行完后就释放了。所以20行打印出来的值是260。
回复 使用道具 举报
1楼的逻辑已经说的很清楚了,如果能理解的话,基本上能解决疑惑。
回复 使用道具 举报
ambition 来自手机 中级黑马 2015-5-14 09:09:23
15#
只要抓住作用域和代码块这两点,这个题就简单了
回复 使用道具 举报
hehelaicaicai 发表于 2015-5-13 10:17
作用域的问题,我贴个分析图给你。

还是你回答的最清晰啊,感谢
回复 使用道具 举报
hehelaicaicai 发表于 2015-5-13 10:17
作用域的问题,我贴个分析图给你。

感谢您的分析
回复 使用道具 举报
260,就近原则
回复 使用道具 举报
作用域的问题,我贴个分析图给你。

QQ截图20150513101938.jpg (124.73 KB, 下载次数: 15)

QQ截图20150513101938.jpg
回复 使用道具 举报 2 0
只是知道作用域在搞鬼,看起来就是乱乱的。
回复 使用道具 举报
这个就是就近原则里的作用域的问题额!
回复 使用道具 举报
cogddo 中级黑马 2015-5-12 09:27:33
8#
{}代码块,,和就近原则,,这是这类问题的核心。
回复 使用道具 举报
飞翔的猪 发表于 2015-5-11 14:04
回去再看看mj老师的视频吧,有讲过在作用域的时候,

亲,我是喊你帮忙分析,不是来让你叫我在去看视频的
回复 使用道具 举报
回去再看看mj老师的视频吧,有讲过在作用域的时候,
回复 使用道具 举报
这道题以前在论坛都有见过了。作用域的问题。
回复 使用道具 举报
记住就近原则,找最近的来赋值
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马