为什么我的while循环导致无限输出

时间:2014-12-11 02:59:20

标签: c++ visual-studio-2013

我正在尝试构建一个包含while循环的小程序:

int main() {
    int x = 0;
    int y = 0;
    while (x != '|' || y != '|') {
        cout << "Please enter two numbers: \n";
        cin >> x >> y;
        cout << "You entered: " << x << " and " << y << "\n\n" << endl;
    }
    return 0;
}

我使用visual studio和我的linux框编译并运行了我的两个窗口框,当填充了中断要求时,我的终端/ cmd无限地填充无限循环。我在很多地方搜索过,无法找到明确的答案。我试过让while无限并将break参数放在里面无济于事。我有一种感觉,它将垂直符号放在一个整数中,但我已经让它的循环运行良好。我要求的教训是,我的解决方案是“好的”,但我想知道一种干净/标准的方法。

1 个答案:

答案 0 :(得分:0)

无限循环是因为您从不检查输入失败。在行cin >> x >> y之后添加:

if ( !cin )
    break;

请注意xy是整数,因此它们只能存储数字。当您编写x != '|'时,您正在测试该人是否已成功输入与|的ASCII字符代码匹配的数字。如果您希望能够检查该人输入的每个字符,请改为输入string