Integer num = 2147483647;
Integer res = num * num;
System.out.println(res);上面的输出是1。我不确定为什么。谁能解释一下。
提前谢谢。
发布于 2015-03-05 14:13:40
这应该是为了说明为什么result = 1:
long x = Integer.MAX_VALUE;
long y = Integer.MAX_VALUE;
long res = x * y;
System.out.println(Long.toHexString(res));打印
3fffffff00000001如果我们将res强制转换为int,我们将得到1
发布于 2015-03-05 14:10:04
这是因为整数溢出。Java的最小值为-2,147,483,648,最大值为2,147,483,647 (含),并且您的结果(Res)超出了Integer max范围。
发布于 2015-03-05 14:10:17
https://stackoverflow.com/questions/28871087
复制相似问题