一个问题~~~有关java基础~~overflow,等待~~

cxhz_cn 2002-03-11 04:58:46
public class overflow {

public static void main(String arg[]){
int big = 0x7fffffff;
int bigger =0;
for (int i=0;i<10;i++){
bigger= big * i;
System.out.println("big"+big);
System.out.println("bigger"+bigger);
}
}
}


结果如下:
big2147483647
bigger0
big2147483647
bigger2147483647
big2147483647
bigger-2
big2147483647
bigger2147483645
big2147483647
bigger-4
big2147483647
bigger2147483643
big2147483647
bigger-6
big2147483647
bigger2147483641
big2147483647
bigger-8
big2147483647
bigger2147483639

为啥会有这样的答案~~
在i是奇数倍的时候~~~
...全文
28 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cxhz_cn 2002-03-11
给分了
回复
heifei 2002-03-11
0x7fffffff + 1 = 0x80000000
也就是首位为1区域为零,80000000换位十进制2147483648
0x80000000为-2147483648
类推(0x7fffffff*2)=0x7fffffff + 0x7fffffff=-2
回复
Luke_cn 2002-03-11
对于int类型来说当超出其范围时,不会抛出一个异常。
正数的最高位是0,当超出后,0变为1,此时就会变成负数。
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2002-03-11 04:58
社区公告
暂无公告