【发布时间】:2013-06-30 02:38:52
【问题描述】:
我正在编写以下代码。
#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?这是预定义的行为吗?
【问题讨论】:
-
如果输入失败,输入变量,即流的参数保持不变..
-
@Koushik 是吗?在我的情况下,它们变为 0。这就是我的问题。为什么它会改变,为什么是 0?
-
它不适合我,它总是显示我输入的最后一个数字。在 MSVC2012 中测试。
-
@Borgleader 我在 Code::Blocks 上使用 GCC 4.7.2,它确实变为 0 并进入无限循环。