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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王龙喜 中级黑马   /  2012-9-3 15:11  /  2208 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么在第一个图片中加个eles{},result 就报错,提示未赋值。
但是去掉else{}后,结果就正常了呢?

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

QQ截图20120903150932.png

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

QQ截图20120903151000.png

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

6 个回复

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

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

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

未命名.jpg

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
这个涉及到了变量的作用域的问题:
1、假如你的result定义在switch(){dataType result; case ……} ------那么你的result就没有传出来--------改为:return result = i1 / i2;就可以了;

2、假如你的result定义在switch(){……}的外边,则有可能是你 result = i1 /i2 ;这条语句就没有执行到;(去掉else {}或者在定义result变量的时候赋初值);

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2012-9-3 15:45
1. else {   result = i1 / i2 ;} ,变量result的使用范围在{ } 内,由于没有赋初值,所以程序会在该处报错 ...

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

嗯,明白了,谢谢。。
回复 使用道具 举报
徐宏伟 发表于 2012-9-3 16:09
这个涉及到了变量的作用域的问题:
1、假如你的result定义在switch(){dataType result; case ……} ------ ...

嗯,明白了,谢谢指导。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马