黑马程序员技术交流社区

标题: 函数返回值与参数的关系 [打印本页]

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

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

QQ图片20150623165222.jpg

作者: 拐子    时间: 2015-6-23 17:02
把参数byte改为int 就能打印出来,很费解
作者: bingyu    时间: 2015-6-23 21:33
add方法的参数和你传入的参数不匹配啊,传入的值的范围比方法的参数范围大,由大转小要显示强制转换,不然二进制高位会被截取,只留最后8个位,精度就丢失了,编译失败
作者: 拐子    时间: 2015-6-23 21:54
bingyu 发表于 2015-6-23 21:33
add方法的参数和你传入的参数不匹配啊,传入的值的范围比方法的参数范围大,由大转小要显示强制转换,不然二进 ...

恩,解答了,谢谢 也就是说我在主函数的参数改为 byte x=1,y=2; 就ok了
作者: 符慢慢    时间: 2015-6-23 22:09
技术分 好高呀

作者: 安安安    时间: 2015-6-23 22:44
楼上都说完了。。
作者: keto    时间: 2015-6-23 22:52
学习了。。。。
作者: ym123456    时间: 2015-6-23 22:58
上的打撒手的
作者: 张凝宁    时间: 2015-6-24 00:14

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

byte类型赋值int怎么会精度缺失呢,会自动提升吧,同志
作者: 慕容旺财    时间: 2015-7-2 18:22
返回值类型跟参数类型没有必然联系 看你具体怎么写这个函数 就你这道题来说 byte范围-128-127 int范围-2147483648~2147483647 你缩小了范围 不能这么搞 要么强转 要么保持一致
作者: 几率收割    时间: 2015-7-2 18:27
你把int类型x,y传给byte类型a,b肯定不匹配呀




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