C++ 返回 bool 总是假的?

标签 c++ boolean return

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

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

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

    return rightA;

我已经用调试器检查过,如果输入了正确的答案,它就会转到 rightA = true;并返回,所以这很有效。 但如果我检查 rightA 的值,它是错误的。 如果需要,这里是我用来调用测验的函数:

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 中打开一个 bool,您是否期望除 truefalse 之外的任何其他值?

关于C++ 返回 bool 总是假的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20515614/

相关文章:

matlab - 测试表 Matlab 中是否存在列

c - 使用 boolean 值 "mask"数组进行数组索引

javascript - 使用包含 "return to site"链接的顶部栏打开外部网站

PHP 函数不返回结果

c++ - 如何从插件中的单独 C++ 线程调用发射器回调?

c++ - 使用可变参数模板进行委托(delegate)

java - 在实例变量和方法之前写 "this."是好还是坏风格?

validation - 不能使用 boolean 验证 laravel 5

c++ - Qt中带有子菜单的可点击菜单项

java - 方法不返回字符串?