C++ 新手,创建了一些输出看似无限数字的东西。有人可以解释为什么吗?

-1 c++ while-loop

我是 C++ 新手,想测试我在 while 循环中的知识,我使用 MS Visual Studios 2019,并创建了此代码

int main() {
    int i = 12;
    while (i > 10) {
        cout << i;
        i++;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,我遇到了看似无限的数字线,它们仍在继续运行。我尝试在 w3schools IDE 上使用它,它打印出一个长字符串。我知道整数最大可达 2,147,483,647,但它并没有结束,甚至还没有在那里。有人可以向我解释发生了什么事吗?

Ted*_*gmo 5

看起来似乎会打印无限多个数字,但由于有符号整数溢出,程序具有未定义的行为:

int main() {
    int i = 12;
    while (i > 10) {
        cout << i;
        i++;         // will eventually be INT_MAX + 1 and UB
     }
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

由于程序最终会溢出i,因此整个程序的行为是未定义的

在许多平台上,循环将继续进行,最终iINT_MAXINT_MIN,然后循环结束(因为INT_MIN不是> 10) - 但是,它是undefined。不要让您的程序导致有符号整数溢出。


归档时间:

查看次数:

86 次

最近记录:

2 年,12 月 前