为了练习C++中输入和输出的效果,我编写了一小段代码。我想知道为什么它会表现得如此。

//A Stupid Program
#include <iostream>
using namespace std;

int main()
{
int x;
cout << "please enter a numero: "; cin >> x;
main();
}

运行代码会要求用户“请输入数字:_”,并在输入数字时重复进行。可以是任何整数。典型输出如下所示:
Please enter a numero: 1
Please enter a numero: 1
Please enter a numero: 152
Please enter a numero: 2
etc...

但是,如果您输入的不是int,则递归循环会变得疯狂并开始打印“请输入数字:”而不要求输入。看起来像这样:
please enter a numero: H please enter a numero: please enter a numero: please enter a numero: please enter a numero: please enter a numero: please enter a numero: please enter a numero: please enter a numero: please enter a numero: please enter a numero: please enter a numero: etc...

然后程序停止工作并返回-1073741571。

因此,这就是我想要的帮助:输入非整数时,为什么程序不等待输入,为什么返回-1073741571?

谢谢您的帮助。

最佳答案

实际上,您正在调用main(可以将所有内容提取到单独的函数中),问题是当您输入流无法解析的内容时,它会进入错误状态,该状态会立即从每个操作中返回而不会做任何事情。您需要检查错误状态并重置流才能摆脱这种情况。

10-07 14:59