gpt4 book ai didi

c++ - 无限循环会自行结束吗

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:04 25 4
gpt4 key购买 nike

假设我们有以下循环:

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

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

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

最佳答案

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

没有。

但是您的循环不仅不是无限的,而且由于 for 循环条件,它甚至不会运行一次。

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

i , at 1 永远不会满足循环条件 i>2。

假设您的意思是 i < 2 ,那么答案是,我不知道。整数溢出是 C++ 中的未定义行为(see here)。

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

关于c++ - 无限循环会自行结束吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864328/

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