黑马程序员技术交流社区

标题: 关于变量在代码块中的作用域 [打印本页]

作者: cysummery    时间: 2015-4-5 12:27
标题: 关于变量在代码块中的作用域

复制代码
/*
变量的作用域:
    在代码块中,变量score如果没有int重定义,那么赋值给了离他最近的int定义的score;
    printf打印的是同一层级定义的score的最后一次赋值结果.
*/

#include <stdio.h>

int main(int argc, const char * argv[]) {

   
    int score = 100;
    printf("score=%d\n",score);
    {
        score = 200;
        printf("score=%d\n",score);
        int score = 300;
        score = 400;
        printf("score=%d\n",score);
        {
            score = 500;
            printf("score=%d\n",score);

        }
        //在同一层级离他最近的int定义的score被赋值两次,最后一次是500,所以打印了500;
        printf("score=%d\n",score);

    }
    printf("score=%d\n",score);

    return 0;
}
代码输出结果:
score=100
score=200
score=400
score=500
score=500
score=200
//粘贴过来的代码没有了缩进...


作者: 梦想中前行    时间: 2015-4-5 21:25
我想问,最后一个打印结果是200?
作者: cysummery    时间: 2015-4-5 21:34
梦想中前行 发表于 2015-4-5 21:25
我想问,最后一个打印结果是200?

对呀,你可以试试,我觉得,最后一个printf和第一个int初始化的score在同一个层级,而那个score后面最后一次赋值就是200了,所以打印200,这结果是我直接从控制台复制过来的~
开始我也很惊讶来着...




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