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

Mus*_*afa 0 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;
}
Run Code Online (Sandbox Code Playgroud)

JGr*_*ven 5

ans总是不等于n或N.你的OR条件总是正确的.尝试将其切换为

    while(ans == 'Y' || ans == 'y')
Run Code Online (Sandbox Code Playgroud)

  • `while(ans!='N'&& ans!='n')`也可以. (4认同)
  • 你的cins在你的提示中出了故障.你的提示要求操作,但你的cin命令是ab op. (3认同)
  • @TJCrowder:嘿......在简单的问题上,事情发生得很快.:) (2认同)