gpt4 book ai didi

java算术

转载 作者:搜寻专家 更新时间:2023-11-01 04:06:56 24 4
gpt4 key购买 nike

为什么这段代码返回错误值?

int i=Integer.MAX_VALUE+1;
long l=Integer.MAX_VALUE+1;
System.out.println(l);
System.out.println(i);

最佳答案

当您将 1 加到 Integer.MAX_VALUE 时,它会溢出并返回到 Integer.MIN_VALUE

发生这种情况是因为 Java 使用 two's complement来表示整数。一个 4 位的例子:

0000 : 0
0001 : 1
...
0111 : 7 (max value)
1000 : -8 (min value)
...
1110 : -2
1111 : -1

因此,当您将 1 添加到 0111(最大值)时,它变为 1000,这是最小值。将这个想法扩展到 32 位,它的工作方式相同。


至于为什么你的 long 也显示不正确的结果,这是因为它在 int 上执行加法,然后 then 隐式转换为 。你需要做的:

long l = (long) Integer.MAX_VALUE + 1
System.out.println(l); // now prints the correct value

关于java算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com