好了,这是我的问题所在。当我用5初始化x时,while循环不会终止,但是用偶数初始化它,比如6会终止循环:
int x = 6;
while(x != 0){
x = x + 2;
}令我惊讶的是,尽管我认为它不会终止,但它还是终止了。然而,下面的类似循环,x的奇数值无限循环:
int x = 5
while(x != 0){
x += 2;
}这似乎只发生在Java语言中的while循环中,因为我在for循环中没有得到类似的结果。请帮我解释一下,因为我现在很困惑。谢谢
发布于 2018-12-07 07:05:32
整数在2147483647处溢出,如果加上1,它将变为-2147483648。所以当你从偶数开始的时候,你会再次回到零。但是,当你从奇数开始时,你永远不会回到零。
发布于 2018-12-07 07:05:46
这里不会深入讨论,但这是因为溢出。一个整数是32位的,所以它是有限数量的数字。由于它有符号,这意味着数字的范围从−2.147.483.648到2.147.483.647。因此,在本例中: 2.147.483.647 +1= -2.147.483.648是溢出。
这意味着如果你有x+1,你的while循环总是会终止。因为一旦达到0,while循环条件就会被破坏。如果你加上2,它似乎是有效的,因为数字x在某一时刻达到了0。
希望它能帮助交配。
https://stackoverflow.com/questions/53660962
复制相似问题