今天看视频教程,看到变量的作用域这一部分,并且做后面的课后题的时候,最后一个输出结果计算错误,就总结了一下为什么会出错,应该注意什么,下面就是这道题:
#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; } 这道题我已开始认为的输出结果为: 正确结果: 120 120 10 10 30120 30260 看完答案后,我仔细分析了一下,确实是粗心或者是对于变量的作用域理解还是不透彻。 前领个输出结果很简单,不做分析了,主要分析一下走后一个结果,30不用说,主要是这个260, #include <stdio.h> int main() { int a = 20; int score = a + 100; printf("%d\n", score); //这部分 score=120 { int score = 50; { score = 10; printf("%d\n", score); } a = 10; }这部分(红色区域)由于变量a没有定义,所以要想上一级寻找变量a,找到变量a并且赋值为10,这个变量a,为全局变量,为下一步的score计算 { score = a + 250;//这个score在这个块中没有定义,所以要向上一级寻找,并且把score的值变为260(250+10),这个score为全局变量 int score = 30; printf("%d", score);//这个score只作用于它的这个块 } printf("%d\n", score);//这个位置输出的score 为全局变量score,所以结果为260 return 0; } 这就是我的心得,希望大家互相提高,互相帮助:lol
|