当前位置:  开发笔记 > 编程语言 > 正文

无限循环是否会由它自己结束

如何解决《无限循环是否会由它自己结束》经验,为你挑选了1个好方法。

我们假设我们有以下循环:

    for (int i = 1; i < 2; i--)
    {
        cout << i << endl;
    }

毫无疑问,这是一个无限的循环.但是,我的问题是,它会运行多长时间?因为我的教授说,鉴于int是4 bytes = 32 bits,它可以存储一个数字-2147483648 to 2147483647.鉴于此,他接着说,在一个for循环中,如果它到达其中一个数字,并且循环仍然被编程为继续(就像这个那样),那么数字将变为正数,条件将满足,终止循环.

我的问题恰恰是:这是怎么发生的?为什么数字-2147483648在for循环中变为+2147483648,为什么+2147483648在for循环中变为-2147483648?因为我曾经认为一旦计数器达到2147483649就会发生分段错误.感谢您的回复!



1> Fantastic Mr..:

回答你的标题问题; Will an Infinite Loop ever end by Itself:

没有.

但是你的循环不仅不是无限的,因为for循环条件它甚至不会运行一次.

for (int i = 1; i > 2; i--)

i,1将永远不会满足循环条件i> 2.

让我们说,虽然你的意思i < 2,然后答案是,我不知道.整数溢出是未定义的行为C++(见这里).

在大多数情况下,它会回滚,但由于行为未定义,因此没有必要讨论真正发生的事情.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有