黑马程序员技术交流社区

标题: if作用域紊乱的问题 [打印本页]

作者: mars887    时间: 2015-6-21 00:44
标题: if作用域紊乱的问题
int age = 10;
if(age > 5)
int num = 5;
printf("%d\n",num);

老师说这个会造成作用域紊乱,我没想明白。
if后面没大括号,默认下面第一行为括号中的,age=10,10>5,if为真,结果为num=5,难道不对吗
作者: 丁铭检    时间: 2015-6-21 10:20
貌似对的、、
作者: mars887    时间: 2015-6-21 11:50
丁铭检 发表于 2015-6-21 10:20
貌似对的、、

是错的,我运行了,后来我又看了下视频,原来内部定义的变量,代码块执行结束就销毁了,所以根本不会有输出值
作者: 丁铭检    时间: 2015-6-21 17:38
mars887 发表于 2015-6-21 11:50
是错的,我运行了,后来我又看了下视频,原来内部定义的变量,代码块执行结束就销毁了,所以根本不会有输 ...

学习了。。。
作者: woaiqpl    时间: 2015-6-21 17:52
显然不对,你这个不是if作用域的问题这个事局部变量和全局变量作用域的问题在当前代码块局部变量会屏蔽全局变量的作用域局部变量的作用域到当前代码块结束
作者: 马贺飞    时间: 2015-6-23 10:27
学习了。。。
作者: pp584995727    时间: 2015-6-23 22:30
if后面定义的那条语句会报错int num = 5;要用括号包含起来
作者: 杨庆庆    时间: 2015-6-23 22:39
这个就是作用域的问题,num是定义在if的作用域中,而printf是在if之外的范围打印的....是不对的,,,你加上一个花括号把他们放到一起就对了.....
作者: 沙睿    时间: 2015-6-23 22:42
对,必须有大括号的




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