C++返回的bool总是false

C++ returning bool is always false?

本文关键字:总是 false bool 返回 C++      更新时间:2023-10-16

我实现了一个Quiz Code,并在它的末尾做了一个简短的更改,以检查用户是否正确回答了它。

我的if/else看起来是这样的:

   if (answer == rightanswer){
        rightA = true;
    }
    else {
        rightA = false;
    }
    return rightA;

我已经和调试器核实过了,如果输入了正确的答案,它就会向右A=true;和返回,所以这工作finde。但如果我检查右A的值,它是假的。如果需要的话,下面是我用来调用测验的函数:

void gameOver(char field[HEIGHT][WIDTH], char newField[HEIGHT][WIDTH]){ // TODO
    bool rightA = false;
    showQuizDialog(rightA);
    do{
    system("cmd /c cls");
    switch (rightA){
        case true : cout << "menu"; menu(field, newField); break;
        case false : showQuizDialog(rightA); break;
        default : cout << " ";
    }
    }while(rightA == false);

    }

我有点没有暗示。我可能有一些逻辑错误,只是我现在看不出来。问候

E: 我不想用代码轰炸你们。但它是:

bool showQuizDialog(bool rightA){
    Quiz* quiz = Quiz::getInstance();
    quiz -> askQuestion(rightA);
        return rightA;

}

完整的问题问题:

    bool Quiz::askQuestion(bool rightA) {
    int fragenID = rand() % this->fragen.size(); //zufällige Fragen auswählen
    struct Question frage = this->fragen.at(fragenID);
    std::cout << frage.frage.c_str() << std::endl << endl; //Frage stellen
    int rightanswer = this->listAnswers(frage.antworten);
    int answer = this->readAnswer(0, frage.antworten.size() - 1);
    if (answer == rightanswer){
        rightA = true;
    }
    else {
        rightA = false;
    }
    return rightA;
}

showQuizDialog(rightA)是否应该神奇地更改rightA的值?(我想你不是在引用它)。

你是想写rightA = showQuizDialog(rightA)还是rightA = quiz -> askQuestion(rightA)

此外,在打开布尔的switch中,除了truefalse之外,您还期望其他值吗?

showQuizDIalog是一个按值调用的函数。因此,在调用showQuizDialog时,始终将函数的返回值存储在rightA中,即:

rightA = showQuizDialog(rightA);

否则,请更改您的函数声明以允许通过引用,可能像这个一样

showQuizDialog(&rightA);

并且不需要从函数中返回任何内容(只需使用指针而不是函数内的变量rightA)