std :: cin of char导致无限循环

时间:2013-12-18 23:09:09

标签: c++

我在切换之前的cin之后使用了cout语句来确定我遇到了第二个数字和字符op的问题,并且由于某种原因我进入了无限循环! 我有一种感觉,我在语法上犯了一个小错误,但我无法弄清楚它是什么。

#include<iostream>
using namespace std;
int main()
{
    float a, b;
    char op, ans;
    do {
    cout << "Enter first number, operator, second number: ";
    cin >> a;
    cin >> b;
    cin >> op;
    cout << "first number is: " << a << "second number is: " << b << "operator is: " << op;
    switch (op) {
    case '/':
        cout << "answer = " << a / b << endl;
        break;
    case '*':
        cout << "answer = " << a * b << endl;
        break;
    case '+':
        cout << "answer = " << a + b << endl;
        break;
    case '-':
        cout << "answer = " << a - b << endl;
        break;
    }
    cout << "again? Y/N";
    cin >> ans;
    } while (ans != 'N' || ans != 'n');

    cout << endl;
    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:5)

并且总是不等于或等于。你的OR条件总是如实。尝试将其切换为

    while(ans == 'Y' || ans == 'y')

答案 1 :(得分:4)

您希望自己的条件是:

} while (ans != 'N' && ans != 'n');

它不能同时是'N'和'n'。如果是这样的话,世界可能会消失在一个厄运的漩涡中。

答案 2 :(得分:1)

你需要改变这一行:
    cin&gt;&gt;一;
    cin&gt;&gt; B;
    cin&gt;&gt;运算;

到这一个:
    cin&gt;&gt;一;
    cin&gt;&gt;运算;
    cin&gt;&gt; B;