C++返回的bool总是false
C++ returning bool is always false?
我实现了一个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
中,除了true
或false
之外,您还期望其他值吗?
showQuizDIalog是一个按值调用的函数。因此,在调用showQuizDialog时,始终将函数的返回值存储在rightA中,即:
rightA = showQuizDialog(rightA);
否则,请更改您的函数声明以允许通过引用,可能像这个一样
showQuizDialog(&rightA);
并且不需要从函数中返回任何内容(只需使用指针而不是函数内的变量rightA)
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 伪造事实↔false
- QueryWorkingSet总是返回false
- 为什么我总是在代码中得到"false"
- 为什么pyarg_parsetuple总是返回false
- Vulkan 和 glfwVulkanSupported() 总是返回 false
- Cef Cookie管理器SetCookie总是返回false
- IsProcessRunning 函数总是返回 false
- C++返回的bool总是false
- 为什么typeid总是返回false
- QT query.exec() 总是返回 false
- 为什么 WinAPI FormatMessage 失败,总是返回 false
- IsIconic()总是返回false,而OpenIcon()从不打开窗口
- 为什么我的全局布尔值总是导致false
- Boost::mpl::equal对于vector和vector_c总是为false
- double比较类型的变量总是返回false
- Bool函数总是返回false
- 为什么QFile::canReadLine()总是返回false ?
- if(result==NULL)总是返回false,即使查询返回零行也是如此
- Poco::File::exist总是返回false