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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


复制代码
/*
变量的作用域:
    在代码块中,变量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
//粘贴过来的代码没有了缩进...

2 个回复

正序浏览
梦想中前行 发表于 2015-4-5 21:25
我想问,最后一个打印结果是200?

对呀,你可以试试,我觉得,最后一个printf和第一个int初始化的score在同一个层级,而那个score后面最后一次赋值就是200了,所以打印200,这结果是我直接从控制台复制过来的~
开始我也很惊讶来着...
回复 使用道具 举报
我想问,最后一个打印结果是200?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马