我正在处理以下代码。
#include <iostream>
int main()
{
std::cout << "Enter numbers separated by whitespace (use -1 to quit): ";
int i = 0;
while (i != -1) {
std::cin >> i;
std::cout << "You entered " << i << '\n';
}
}
我知道使用while (std::cin >> i)
会更好,但我不理解一个特定的情况。
如果我提供无效输入,循环将变成无限循环,因为输入流进入了失败状态。我的问题是输入变量i
会发生什么?在我的情况下,它变成了0,而不管之前输入的值是什么。为什么在无效输入后它会改变为0?这是预定义的行为吗?