A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mars887 中级黑马   /  2015-6-21 00:44  /  1335 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int age = 10;
if(age > 5)
int num = 5;
printf("%d\n",num);

老师说这个会造成作用域紊乱,我没想明白。
if后面没大括号,默认下面第一行为括号中的,age=10,10>5,if为真,结果为num=5,难道不对吗

8 个回复

倒序浏览
貌似对的、、
回复 使用道具 举报

是错的,我运行了,后来我又看了下视频,原来内部定义的变量,代码块执行结束就销毁了,所以根本不会有输出值
回复 使用道具 举报
mars887 发表于 2015-6-21 11:50
是错的,我运行了,后来我又看了下视频,原来内部定义的变量,代码块执行结束就销毁了,所以根本不会有输 ...

学习了。。。
回复 使用道具 举报
显然不对,你这个不是if作用域的问题这个事局部变量和全局变量作用域的问题在当前代码块局部变量会屏蔽全局变量的作用域局部变量的作用域到当前代码块结束
回复 使用道具 举报 1 0
学习了。。。
回复 使用道具 举报
if后面定义的那条语句会报错int num = 5;要用括号包含起来
回复 使用道具 举报 1 0
这个就是作用域的问题,num是定义在if的作用域中,而printf是在if之外的范围打印的....是不对的,,,你加上一个花括号把他们放到一起就对了.....
回复 使用道具 举报
沙睿 来自手机 中级黑马 2015-6-23 22:42:02
9#
对,必须有大括号的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马