把开关放在do..while里面

Putting a switch inside of do...while

本文关键字:while 里面 do 开关      更新时间:2023-10-16

所以我有一个do…while语句,除非用户输入四个内容中的一个,否则它应该重复。这四件事有一个中断,它们将控制while的变量设置为true,其中默认值为false。如果用户没有输入四个答案中的一个,变量将保持为false,这将使do…同时重新开始。事实并非如此。

#include <string>
#include <iostream>
using namespace std;
int main()
{
    int q5_answer = 1;
    int q5_answerU;
    int total_score;
    bool q5_valid = false;
    //Question_5:
    do
    {
        cout << "Question 5 (#1 is correct)" <<endl;
        cout << "1.) Answer 1" <<endl;
        cout << "2.) Answer 2" <<endl;
        cout << "3.) Answer 3" <<endl;
        cout << "4.) Answer 4" <<endl;
        cin >> q5_answerU;
        switch (q5_answerU)
        {
        case 1:
            cout << "Correct!" <<endl;
            q5_valid = true;
            (total_score = total_score + 1);
            break;
        case 2:
            cout << "Incorrect" <<endl;
            q5_valid = true;
            break;
        case 3:
            cout << "Incorrect" <<endl;
            q5_valid = true;
            break;
        case 4:
            cout << "Incorrect" <<endl;
            q5_valid = true;
            break;
        default:
            cout << "Invalid answer" <<endl;
        }
    } while (q5_valid = false);
}

while内部的条件是一个"意外"赋值,而不是比较。它需要读取while (q5_valid == false)或更惯用的while (!q5_valid)

这不是布尔表达式:

q5_valid = false

它将变量q5_valid设置为false,并返回false。替换为:

!q5_valid

q5_valid == false

它们是一样的。前者更便于阅读。