gpt4 book ai didi

java - 为什么这个无限循环会收敛?

转载 作者:行者123 更新时间:2023-12-01 18:07:09 25 4
gpt4 key购买 nike

为什么 Java 中的这段代码在无限循环时输出值 -210

当整数达到最大值时,循环是否结束?

public static void main(String[] args)
{
int a=100;
int b=110;
int c=0;
while(a>=100 && b<=110) {
a=a+1;
b=b-1;
c=a-b;
}
System.out.println(c);
}

最佳答案

该循环由于整数溢出而终止。当a达到 int 的最大值,增加它会使其变为负数。当b达到 int 的最小值,递减它使其成为一个大的正值。一旦其中之一溢出,循环就会终止。

由于初始值,a会首先溢出,因为两者都初始化为正值,所以 a更接近Integer.MAX_VALUEbInteger.MIN_VALUE .

至于为什么输出呢-210 :

a递增(Integer.MAX_VALUE-100)+1直到循环终止
b减少相同的次数。

final aInteger.MIN_VALUE (由于溢出)
final b110 - ((Integer.MAX_VALUE-100)+1) =
110 - ((-Integer.MIN_VALUE-1-100)+1) =
Integer.MIN_VALUE + 210

因此,a-b最终是 Integer.MIN_VALUE - (Integer.MIN_VALUE + 210) = -210

关于java - 为什么这个无限循环会收敛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340458/

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