首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在Java中提供偶数,为什么应该是无限循环的while循环会终止

问如果在Java中提供偶数,为什么应该是无限循环的while循环会终止
EN

Stack Overflow用户
提问于 2018-12-07 06:59:00
回答 2查看 76关注 0票数 1

好了,这是我的问题所在。当我用5初始化x时,while循环不会终止,但是用偶数初始化它,比如6会终止循环:

代码语言:javascript
复制
int x = 6;
while(x != 0){
    x = x + 2;
}

令我惊讶的是,尽管我认为它不会终止,但它还是终止了。然而,下面的类似循环,x的奇数值无限循环:

代码语言:javascript
复制
int x = 5
while(x != 0){
    x += 2;
}

这似乎只发生在Java语言中的while循环中,因为我在for循环中没有得到类似的结果。请帮我解释一下,因为我现在很困惑。谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-12-07 07:05:32

整数在2147483647处溢出,如果加上1,它将变为-2147483648。所以当你从偶数开始的时候,你会再次回到零。但是,当你从奇数开始时,你永远不会回到零。

票数 0
EN

Stack Overflow用户

发布于 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。

希望它能帮助交配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53660962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档