黑马程序员技术交流社区
标题:
这两个代码的区别
[打印本页]
作者:
الغيوم_ا
时间:
2014-7-14 23:14
标题:
这两个代码的区别
代码一:
int a = 111;
{
a = 100;
{
a = 222;
printf("a=%d\n",a);
}
printf("a=%d\n",a);
}
printf("a=%d\n",a);
代码二:int a = 111;
{
int a = 100;
{
int a = 222;
printf("a=%d\n",a);
}
printf("a=%d\n",a);
}
printf("a=%d\n",a);
作者:
Moebius
时间:
2014-7-15 00:28
你这两个代码的区别在于第三行,第一段代码是 a = 100; 第二段代码是 int a = 100; 这意义就不一样了。
首先第一段代码中 a = 100; 它会去找最近的 a ,可是在第三行前面只有一个 int a = 111; 所以,它会把你一开始设置的 a = 111 改成 a = 100 所以第三个printf输出的时候是100。而第二段代码是临时又声明了一个a 这时,它就不会向上去寻找 a 变量了。所以第三个printf输出的时候是111。
作者:
云霄之上
时间:
2014-7-15 00:51
第一段代码是单纯的对一个变量进行 多次改变赋值 但是最终输出的三个结果都是222 而 第二段代码则是在大代码块内嵌套出现了两个代码快 虽然都是名字叫a但是却是不同的 这是应该就近原则取值 分别是222 111 100
作者:
温天恩
时间:
2014-7-15 08:19
代码一:222,222,222
代码二:222,100,111.
每次对a重新声明时,从新定义a的那一行起,a就相当于一个新的变量,直到新定义a到其作用域结束,它的生命周期也随之结束。
作者:
caopengxu
时间:
2014-7-15 21:35
考的是变量的作用域嘛,恩恩。
作者:
丶白菜你个小番
时间:
2014-7-17 14:31
这是作用域的问题,{}就相当于一个作用域,走出}就意味着{}里面定义的变量将被清除掉
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2