-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,但它并没有结束,甚至还没有在那里。有人可以向我解释发生了什么事吗?
看起来似乎会打印无限多个数字,但由于有符号整数溢出,程序具有未定义的行为:
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,因此整个程序的行为是未定义的。
在许多平台上,循环将继续进行,最终i从INT_MAX到INT_MIN,然后循环结束(因为INT_MIN不是> 10) - 但是,它是undefined。不要让您的程序导致有符号整数溢出。
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |