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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 这是829 中级黑马   /  2015-5-18 22:08  /  2626 人查看  /  30 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本人小白零基础入学,对于作用域问题有点儿不理解,今儿做作业遇到一道题做错了,请哪位大神帮我解答一下。题目如下:
请写出下面代码的执行结果:
#include ,<stdio.h>
{
     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;
}
我自己算出来的输出结果是 120   10   30    120   老师给出的答案是  120   10   30  260  为何最有一个输出是260,中间的小块儿作用域不是结束就释放了吗,难道最后一个输出结果不和第一个输出一样吗?求解

30 个回复

倒序浏览
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 20; //main 函数结束时 才回收
  5.     int score = a + 100; //main 函数结束时 才回收

  6.     printf("%d\n", score); //120
  7.     {
  8.         int score = 50; //代码块 结束时 回收
  9.         {
  10.             score = 10; // 代码块 结束时 回收的 score 变成 10

  11.             printf("%d\n", score);//10
  12.         }
  13.         a = 10; //main 函数结束时 才回收的 a 变成 10
  14.     }
  15.     {
  16.         score = a + 250; //main 函数结束时 才回收的 a = 10 , score = 260
  17.         int score = 30;
  18.         printf("%d\n", score);//30
  19.     }
  20.     printf("%d\n", score);//260 //main 函数结束时 才回收的 score = 260
  21.     return 0;
  22. }
复制代码

点评

呵呵,出这题的人也真是。。。 谁会这样写代码啊,非把自己搞乱掉  发表于 2015-5-21 19:57
回复 使用道具 举报 2 0
  作用域以及内存储存的知识点
回复 使用道具 举报
来吸取经验来了
回复 使用道具 举报
学习了.......
回复 使用道具 举报
我就看看  
回复 使用道具 举报
好好学习天天向上
回复 使用道具 举报
最后一个代码块有两个score 一个对应的是上面的全局变量  还有一个是int score 这个是代码块里定义的局部变量 释放的时候只释放重新Int的
回复 使用道具 举报
这道题我们刚做过
回复 使用道具 举报
嘿嘿,这里我也错了.
回复 使用道具 举报
貌似我也错了,不过公司里谁会这么写代码啊
回复 使用道具 举报

谢谢你的解答太清楚太详细了!
回复 使用道具 举报
着实没什么实际意义
回复 使用道具 举报
649678291 发表于 2015-5-18 23:16
作用域以及内存储存的知识点

恩,作用域的问题现在懂了。
回复 使用道具 举报
jingkai 发表于 2015-5-18 23:24
来吸取经验来了

嘿嘿,欢迎共同交流
回复 使用道具 举报
画内存图很好解决的
回复 使用道具 举报 1 0

一起学习。
回复 使用道具 举报

看看吧,一起共同学习!
回复 使用道具 举报

看看吧,一起学习,:)
回复 使用道具 举报
梦初醉 发表于 2015-5-19 23:28
画内存图很好解决的

你不是张玉么
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马