我的程序运行不正常

时间:2014-11-19 10:40:40

标签: java

我在Java中有以下代码,但它不应该溢出。为什么呢?

public classO {
    public static void main(String[] args) {
        int big = Integer.MAX_VALUE;
        System.out.println("big = " + big);
        long bigger = big + 2;
        System.out.println("bigger = " + bigger);
    }
}

我得到了这个输出:

 big = 2147483647
bigger = -2147483647

为什么会溢出?我把它定义得更长。有什么问题?

2 个答案:

答案 0 :(得分:4)

big + 2是一个整数运算,导致你的溢出(首先你添加两个整数然后你把它转换为long但是在castig点已经发生了溢出)。

使用以下代码通过在添加操作之前强制转换int来创建Long操作:

long bigger = (long) big + 2L;

答案 1 :(得分:3)

big+2会溢出,因为最大值。 (long) big不是

时的价值
long bigger = (long) big +2

会对你起作用,因为它会对大而不是整数进行处理。
所以要对其进行浮动操作。