一个
int
最大值为
2^31-1
最小值为
-2^31
. 当值超过这些值时,就会发生整数溢出,这就意味着您要遍历它,它会换行,数字变成相反的符号。(如果将一个添加到最大值,它将变为
-2147483648
)
换一种说法吧。设想一个时钟,除了它从
0
到
2147483647
(在哪里
6
会的),然后立即
-2147483648个
,然后返回到
0个
. (注意
-2147483648个
和
2147483647个
在哪一边
6个
会在一个固定的时钟上)
(0)
|
(-1073741824) - * - (1073741823)
|
(-2147483648) (2147483647)
所以说
y
一只手开始
-5
开始向
-2147483648个
,和
ans
是10,正在向
1073741823
. 随着循环的继续和
是的
一直逆时针移动,
是的
将从
-2147483648个
到
2147483647个
最终归零,退出循环。同时
答复
也会从
2147483647个
-2147483648个
然后停下来
ans == 5
.