黑马程序员技术交流社区

标题: 一个问题 [打印本页]

作者: yumei9    时间: 2015-8-31 17:13
标题: 一个问题
#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);//为何是260,不是120,应该是输出全局变量120
    return 0;
}
作者: 0826iOS_sunzhen    时间: 2015-9-1 00:09


作者: wx_D3aDvzRw    时间: 2015-9-1 12:16
在局部操作时如果对全局变量有动作的话更改的是全局变量的值,更改后拿到任何地方全局变量都是改变过的,在整个函数里最终计算时a被局部赋值10,score = a +250,这里都是全局变量 所以score=10+250=260
作者: yumei9    时间: 2015-9-1 14:52
0826iOS_sunzhen 发表于 2015-9-1 00:09

谢谢,之前没注意一个细节
作者: yumei9    时间: 2015-9-1 14:56
wx_D3aDvzRw 发表于 2015-9-1 12:16
在局部操作时如果对全局变量有动作的话更改的是全局变量的值,更改后拿到任何地方全局变量都是改变过的,在 ...

谢谢,明白了{:2_30:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2