黑马程序员技术交流社区
标题:
哪位能给我解释下为什么答案是-54
[打印本页]
作者:
luke_yang
时间:
2015-1-3 11:20
标题:
哪位能给我解释下为什么答案是-54
class Test1{
public static void main(String[]agrs){
byte a;
a=(byte)(5+197);
System.out.println(a);
}
}
作者:
pcy1022
时间:
2015-1-3 12:17
byte的范围是-128至127,a+b的值为202,已经超出了byte的范围,到127后再加1就成了-128,然后继续加,最后结果就是-54了
作者:
王晓杰
时间:
2015-1-3 20:16
丢失精度
作者:
luke_yang
时间:
2015-1-4 09:26
王晓杰 发表于 2015-1-3 20:16
丢失精度
没有提示失去精度,但是结果是-54
作者:
羽狼之翼
时间:
2015-1-4 14:12
设num = 197;
则(byte)(num)的值等于(num - 256)
即a=-59;
不管是(byte)(num+5)或(byte)(5+num),只要是num的值超出了byte的取值范围127,
就会等于(5+(num - 256));即a=-54
因为byte里面最多放256个数从-128到正的127。
超出了就减去256,实际上,我认为这是程序在报错,提醒你,超范围了。数值是多少,其实不重要。
作者:
luke_yang
时间:
2015-1-4 15:48
羽狼之翼 发表于 2015-1-4 14:12
设num = 197;
则(byte)(num)的值等于(num - 256)
即a=-59;
谢谢 我在运行时候没有报错 所以感到很奇怪
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2