C++中的无限循环

Endless loop in c++

我目前正在学习 C++,但在我的代码中遇到了一个奇怪的行为:

#include<iostream>
using namespace std;

int main(){
    int input;
    int counter = 0;
    while (input != 0 && counter <= 100){
        cout << "-----------\n";
        cout << "0 = Get Out!\nEverything else will be displayed!\nPlease enter a number: ";
        cin >> input;
        cout << "The number: " << input << "\n";
        counter++;
    }
    return 0;
}

这个程序本身工作正常,但是当我输入一个数字作为输入时,它至少是整数数据类型的最大值 + 1,那么这个循环将是无限的(我编程在 100 次循环后停止)并且我真的无法向我解释这个。在其他语言中,程序只是崩溃或给出错误,因为分配的存储空间不足以容纳输入的数据,这是什么逻辑,我明白这一点,但为什么循环在这里变得无休止,这没有任何意义感觉,因为在这种情况发生后我无法进行任何输入,它只是不断地使用值(整数 maxnumber,在我的书架上,maxnumber 可以因系统而异,所以我不输入我的数字)循环并且我什么也做不了,只能看着我的控制台被同样的 4 行淹没。

如果有人能向我解释这个现象,我将不胜感激,我的意思是它并不重要,但无论如何它引起了我的兴趣。

  1. 您的 input 变量需要初始化,因为您在分配输入值之前在 while (input != 0 && counter <= 100){ 中检查了它的值。
  2. Undefined Behaviour is typical in C++ when exceeding data type limits. These are some common UB.
  3. 包含您问题的“解决方案”

下面的怎么样?这是你想要的吗?

#include<iostream>
using namespace std;

int main(){
    int input;
    int counter = 0;
    cout << "0 = Get Out!\nEverything else will be displayed!\nPlease enter a number: ";
    cin >> input;
    cout << "The number: " << input << "\n";
    while (input != 0 && counter <= 100){
        cout << "Please enter the next number: ";
        cin >> input;
        cout << "The number: " << input << "\n";
        counter++;
    }
}