即使应用了错误条件,while循环也不会退出

时间:2019-11-29 21:25:16

标签: c++ loops while-loop

即使在while循环中返回错误的值,我的程序也不会退出。我该怎么办?我刚刚开始编程,无法弄清楚。我已经用Google搜索了答案并复制了教程,但仍然无法正常工作。我假设存在一些冲突的代码或语法错误,但找不到。请帮忙。

using namespace std;

int power(int baseNum, int powNum){
    int result = 1;
    for(int i=0; i<powNum; i++){
        result = result * baseNum;
    }
    return result;
}

int main() {
    char restart;
    while(restart = 'r')
    {
        int numb1;
        int numb2;
        char op;

        cout << "Enter the first number: ";
        cout << endl;
        cin >> numb1;

        cout << "Enter operator: ";
        cout << endl;
        cin >> op;

        cout << "Enter the second number: ";
        cout << endl;
        cin >> numb2;

        switch(op){
            case '+':
                cout << "Sum = " << numb1 + numb2 << endl;
                break;
            case '-':
                cout << "Difference = " << numb1 - numb2 << endl;
                break;
            case '*':
                cout << "Product = " << numb1 * numb2 << endl;
                break;
            case '/':
                cout << "Quotient = " << numb1 / numb2 << endl;
                break;
            case '^':
                cout << "Result = " << power(numb1, numb2) << endl;
                break;
            default:
                cout << "Error: Invalid Operator!" << endl;
        }

        cout << "Press [R] to restart." << endl;
        cin >> restart;
    }

    cout << "the end" << endl;

    return 0;
}

2 个答案:

答案 0 :(得分:-1)

在循环条件下使用restart = 'r'时,它首先将重新启动分配为'r',然后将其评估为true。

在c ++中,除0以外的所有整数均计算为true,并且由于“ r”的ascii代码不为0,因此它将返回true。

您必须使用==运算符进行比较,=必须使用赋值。

答案 1 :(得分:-1)

错误在这里:while(restart = 'r')应该是while(restart == 'r')