黑马程序员技术交流社区

标题: 关于运算中数值自动提升问题 [打印本页]

作者: Nemo    时间: 2015-7-9 21:50
标题: 关于运算中数值自动提升问题
public static byte f(byte b1,byte b2)
        {
                //return (byte)(b1-b2);
                //return b1-b2;
                //return (byte)b1+b2;
                //return (byte)b1/b2;
        }

请问哪一句return可以编译通过,哪些不可以,原因是啥???


作者: longbao    时间: 2015-7-9 22:08
第一句可以编译通过,其余三句都不能编译通过。
作者: longbao    时间: 2015-7-9 22:11
因为两个byte类型数据运算过程中会自动提升为int类型数据,运算结果也是int类型,而方法需要byte类型的返回值,所以要把结果强制转换。只有第一句符合,其余三句都不符合。
作者: javaking    时间: 2015-7-9 23:13
这问题问的好 我还真没注意~~
作者: Nemo    时间: 2015-7-10 17:19
longbao 发表于 2015-7-9 22:11
因为两个byte类型数据运算过程中会自动提升为int类型数据,运算结果也是int类型,而方法需要byte类型的返回 ...

哪几个类型运算会被提升?分别被提升成什么类型呢





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