黑马程序员技术交流社区

标题: 输出结果 [打印本页]

作者: chunjiang    时间: 2015-9-1 14:33
标题: 输出结果
#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);
    return 0;
}
score的输出是什么?
作者: 唐肖虎    时间: 2015-9-1 16:38
120、10、30、260
作者: coding_wang    时间: 2015-9-1 17:41
120
10
30260

30后面没有换行符
我粗暴地理解为:被创建的变量的生存期 不超过其创建时所存在大括号的范围,超过大括号时,这个变量被删除。同一个大括号里面同一个变量无法创建两次,嵌套与被嵌套的大括号里,同名变量优先使用最近创建的那个变量。

int main()
{
    int a = 20;                                         //a==20
    int score = a + 100;                         //score==120     将这个score标记为score_0
    printf("%d\n", score);                      //第一行输出:   120
   
    {
        int score = 50;                            //重新定义局部变量  score==50  假设标记它为 score_1     
        {
            score = 10;                             //将score_1重新赋值为10
            printf("%d\n", score);             //输出score_1   :      10
        }        a = 10;                                        //  a==10
    }
                                                           //到此为止 score_1被删除
    {
        score = a + 250;                        //将score_0赋值为a+250=260
        int score = 30;                           //重新定义一个score,假设标记为score_2,score_2==30
        printf("%d", score);                   //输出score_2  :30       但是后面没有加换行符  所以后面的输出会直接跟在30后面
    }
                                                         //到此为止   score_2 被删除
    printf("%d\n", score);                   //输出score_0的值 :260   
    return 0;
}



作者: 羊口羊口羊    时间: 2015-9-2 00:31
coding_wang 发表于 2015-9-1 17:41
120
10
30260

嘻嘻。看完秒懂,啦啦啦,谢啦
作者: lxszl    时间: 2015-9-2 01:13
120
10
30
260




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