我的C ++计算器无法像我想象的那样对非法输入进行操作

我是C ++的初学者,距开始学习仅一周,所以请您原谅我的愚蠢问题。我编写了一个C ++程序,该程序根据给定的数字计算除,乘,加和减。我声明了一个布尔值n用于控制非法的操作员条件。(+,-,*和/以外的字符)在程序开始时为true,这将迫使用户输入2个数字和一个运算符。然后在while命令中输入条件来控制操作。当给出非合法符号时,n为假。这将强制程序在while语句中执行第二个语句。然后该语句输出一个文本,指出“您的输入是非法的。”然后将n设置为true,这将使程序在有条件的情况下首先执行并获得再次输入。 但是当我运行程序并输入非法运算符(即q)时,程序会永远休眠。我的错误在哪里? 这是代码:

#include <iostream>

using namespace std;
int main() {
    bool n;
    double x;
    string operation;
    double y;
    n = true;
    while (n = true) {
        cin >> x;
        cin >> operation;
        cin >> y;

        if (operation.compare("+") == 0) {
            cout << x + y;
            break;

        }
        if (operation.compare("-") == 0) {
            cout << x - y;
            break;

        }
        if (operation.compare("*") == 0) {
            cout << x * y;
            break;

        }
        if (operation.compare("/") == 0) {
            cout << x / y;
            break;
        } else {
            n = false;
        }
    }
    while (n = false) {
        cout << "Your input is illegal." << endl;
        n == true;

    }
}