一个小问题,高手帮忙解决,谢谢了!!!!

bird00711 2009-03-19 09:13:50
有两个byte类型的数 a、b,a=120,b=-10,b-a的值是多少!

最好把计算的过程也说下!谢谢了!!!!
...全文
89 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
helei123a 2009-03-21
  • 打赏
  • 举报
回复
-126
moolf 2009-03-21
  • 打赏
  • 举报
回复
byte a=120;
byte b=-10;
System.out.println(b-a);
这样输出的结果就是-130,因为b-a的结果会被视为int型的
如果你用 byte c=b-a;这样编译是通不过的因为b-a运算的结果被视为int型
如果你 byte c=(byte)b-a这样输出的结果就是-126 这是因为有溢出,编译器会截断高位。
woshileibo 2009-03-20
  • 打赏
  • 举报
回复
-126
wclszh 2009-03-20
  • 打赏
  • 举报
回复
学习
liqia76 2009-03-20
  • 打赏
  • 举报
回复
我这里测试结果 int result =0 了
guxiangzhang 2009-03-19
  • 打赏
  • 举报
回复
如果a,b,result都是byte类型的,这里出现了溢出,是不能通过编译的。编译器会提示你这里会损失精度~!
如果result是int型结果就是-130.
wanchangjiu123 2009-03-19
  • 打赏
  • 举报
回复
class Jianfa{
public static void main(String []args){
byte a=120;
byte b=-10;
int result=b-a;
System.out.println(result);
}
}
必须 result为int ,才是-130
如果为 byte则会损失精度,会有内存溢出,这两个类型的长度我就不解释了
不善^ 2009-03-19
  • 打赏
  • 举报
回复
用代码测试一下就知道了
byte的范围有限(-127~128)
你这个值等于 -130已经超过了这个范围 所以得到的答案是不对的

public class testByte {

public static void main(String[] args) {
byte a =120;
byte b = -10;
byte sum;
sum = (byte) (a-b);
System.out.println(sum);

}

}
qusic 2009-03-19
  • 打赏
  • 举报
回复
补充一下,比整型占用字节数多的除外
qusic 2009-03-19
  • 打赏
  • 举报
回复
结果是-130,因为整数形式的数据在运算时会被视为整型数据
youyilan 2009-03-19
  • 打赏
  • 举报
回复
-130
zhangbo6791644 2009-03-19
  • 打赏
  • 举报
回复
-130了,-10减去120,不就等于这么?要过程,怎么个过程啊,这就相当于是1+1=2一样嘛
wanchangjiu123 2009-03-19
  • 打赏
  • 举报
回复
这里有个内存溢出现象!!
顶一下!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧