你好,我手里没有编译器,没法调试程序,但我可以试着用程序回答一下。
- #include <stdio.h>
- int main()
- {
- |--->int a = 20;
- | int score = a + 100; <---------------------------------------------------------------------|
- | |
- | printf("%d\n",score);//120 |
- | |
- | { // ---------------------------------------- |
- | int score = 50; | |
- | { | |
- | score = 10; | |
- | ---> 这里面的score在执行到 |
- | printf("%d\n",score);//10 | 达括号结束时就被销毁了。 |
- | } | 但是外面a的值被修改为10 |
- |------------>a = 10; | |
- } // ---------------------------------------- |
- |
- { |
- |-----------> score = a + 250; // -----------------> 当进入这个语句块时,语句块中没有声明score, |
- | 所以程序就到外面寻找名叫score的变量, |
- | 程序找到之前有声明过score, |
- | 所以就修改了第一个声明的score变量的值为260<-|
- | int score = 30; // -------------> 这个score在代码块中声明,代码块执行结束销毁。
- | printf("%d\n",score);//30
- | }
- |
- |----> printf("%d\n",score);//260 // ---------------> 这里输出的score就是程序
- 第一次声明的那个score变量的值
- 此时这个score已经被第二个代码块中的
- 第一句代码修改成了260
- return 0;
- }
复制代码
希望我的回答能够帮助到你。 |