wojavaandta 2015-04-06 05:47 采纳率: 100%
浏览 2754
已采纳

关于自动提升int类型疑问?

byte b1= 1;
byte b2 =2;
byte b3 =b1+b2;
这种编译为什么会报错,求指导?

  • 写回答

6条回答 默认 最新

  • danielinbiti 2015-04-06 13:06
    关注

    当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则:
    只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
    否则,只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;
    否则,只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
    否则,两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。

    当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则:
    运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,且运算结果与运算符左边数值类型相同。

    比如上面 b3+=b1;b3+=b2;这样都是没问题的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?