如下图程序所示
C的结果为a+b也就是256+55=311
而byte的最大取值范围为127,显然超出范围,但是我们使用强制转换,程序没有报错.而返回结算结果为55,下面我们重点解析一下55结果的缘由.
根据数据存取方式,311为正整数,正反补码三码合一,
我们把311转换成二进制结果为0000 0001 0011 0111
int型为4字节的存取方式.而转换成byte型为2字节的存储方式,即只取后面八位而前八位被截断.故311的二进制表示就被强制变为0011 0111.简单计算一下即为10进制的55.
关于JAVA中强制转换巧遇数据溢出执行结果解析
最新推荐文章于 2023-12-14 01:28:48 发布