相关疑难解决方法(0)

为什么Integer.MAX_VALUE + 1 == Integer.MIN_VALUE?

System.out.println(Integer.MAX_VALUE + 1 == Integer.MIN_VALUE);

是真的.

我知道Java中的整数是32位,不能超过2 ^ 31-1,但我不明白为什么在MAX_VALUE中加1会导致MIN_VALUE而不是某种异常.没有像Ruby那样透明地转换为更大的类型.

是否在某处指定了此行为?我可以依靠它吗?

java integer integer-overflow twos-complement jls

26
推荐指数
4
解决办法
3万
查看次数

整数溢出到负数

根据此链接,我了解到,在IE8中,如果创建的数组的索引大于2147483647,则新元素的索引将为负数。

并且有这个样本:

function test() { 
    var arr = new Array();         
    arr[2147483650] = 10000; 
    arr.push(10);     
    document.write(arr["-2147483645"] == 10); 
} 
test();
Run Code Online (Sandbox Code Playgroud)

我不明白的是,数组的新添加的元素为何具有索引-2147483645,我理解了负数部分,我只是不知道如何知道新索引是2147483645,不是-2147483644-2147483651...

javascript arrays

5
推荐指数
1
解决办法
1645
查看次数