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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 拐子 中级黑马   /  2015-6-23 16:59  /  965 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

         最近学到函数,里面有函数的返回值类型和参数的数据类型可以不一样?
如下图:我定义了一个函数,参数是byte类型,返回值sum属于int类型,返回给add也是int类型,那么这个定义的函数没问题,但是在主函数打印结果的时候出现精度缺失,主函数和定义函数不在一个括号里,而且主函数里都是int类型呀 很费解

QQ图片20150623165222.jpg (66.6 KB, 下载次数: 37)

QQ图片20150623165222.jpg

13 个回复

倒序浏览
把参数byte改为int 就能打印出来,很费解
回复 使用道具 举报
add方法的参数和你传入的参数不匹配啊,传入的值的范围比方法的参数范围大,由大转小要显示强制转换,不然二进制高位会被截取,只留最后8个位,精度就丢失了,编译失败
回复 使用道具 举报
bingyu 发表于 2015-6-23 21:33
add方法的参数和你传入的参数不匹配啊,传入的值的范围比方法的参数范围大,由大转小要显示强制转换,不然二进 ...

恩,解答了,谢谢 也就是说我在主函数的参数改为 byte x=1,y=2; 就ok了
回复 使用道具 举报
技术分 好高呀
回复 使用道具 举报
楼上都说完了。。
回复 使用道具 举报
keto 中级黑马 2015-6-23 22:52:51
7#
学习了。。。。
回复 使用道具 举报
上的打撒手的
回复 使用道具 举报

add方法的参数和你传入的参数不匹配啊,传入的值的范围比方法的参数范围大,由大转小要显示强制转换,不然二进制高位会被截取,只留最后8个位,精度就丢失了,编译失败
回复 使用道具 举报
是这个道理,复习了一遍。谢了!
回复 使用道具 举报
你将byte结果赋值到int上肯定精度丢失呀!!!
回复 使用道具 举报
黑马无敌 发表于 2015-6-29 09:39
你将byte结果赋值到int上肯定精度丢失呀!!!

byte类型赋值int怎么会精度缺失呢,会自动提升吧,同志
回复 使用道具 举报
返回值类型跟参数类型没有必然联系 看你具体怎么写这个函数 就你这道题来说 byte范围-128-127 int范围-2147483648~2147483647 你缩小了范围 不能这么搞 要么强转 要么保持一致
回复 使用道具 举报
你把int类型x,y传给byte类型a,b肯定不匹配呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马