黑马程序员技术交流社区

标题: 关于{}的一个问题,就解答 [打印本页]

作者: 王龙喜    时间: 2012-9-3 15:11
标题: 关于{}的一个问题,就解答
为什么在第一个图片中加个eles{},result 就报错,提示未赋值。
但是去掉else{}后,结果就正常了呢?

QQ截图20120903150932.png (3.41 KB, 下载次数: 116)

QQ截图20120903150932.png

QQ截图20120903151000.png (3.25 KB, 下载次数: 110)

QQ截图20120903151000.png

作者: 许庭洲    时间: 2012-9-3 15:45
1. else {   result = i1 / i2 ;} ,变量result的使用范围在{ } 内,由于没有赋初值,所以程序会在该处报错!
2. 若去掉{ },那么result的使用范围就变成了swith语句{}内部了。
作者: 黑马王建伟    时间: 2012-9-3 15:50
本帖最后由 黑马王建伟 于 2012-9-3 15:51 编辑

我想说这是if(){}else{}语句的特性,直接看图,不知你的result怎么定义的?!

未命名.jpg (62.29 KB, 下载次数: 51)

未命名.jpg

作者: 徐宏伟    时间: 2012-9-3 16:09
这个涉及到了变量的作用域的问题:
1、假如你的result定义在switch(){dataType result; case ……} ------那么你的result就没有传出来--------改为:return result = i1 / i2;就可以了;

2、假如你的result定义在switch(){……}的外边,则有可能是你 result = i1 /i2 ;这条语句就没有执行到;(去掉else {}或者在定义result变量的时候赋初值);
作者: 王龙喜    时间: 2012-9-3 18:02
许庭洲 发表于 2012-9-3 15:45
1. else {   result = i1 / i2 ;} ,变量result的使用范围在{ } 内,由于没有赋初值,所以程序会在该处报错 ...

嗯,对的,谢谢了,如果我用else,在if语句里加上return ,也不会再报错了。。
作者: 王龙喜    时间: 2012-9-3 18:03
黑马王建伟 发表于 2012-9-3 15:50
我想说这是if(){}else{}语句的特性,直接看图,不知你的result怎么定义的?!

嗯,明白了,谢谢。。
作者: 王龙喜    时间: 2012-9-3 18:03
徐宏伟 发表于 2012-9-3 16:09
这个涉及到了变量的作用域的问题:
1、假如你的result定义在switch(){dataType result; case ……} ------ ...

嗯,明白了,谢谢指导。。




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