我正在为我的一个大学班分配一项作业,并且遇到一个“问题”,如果我在if语句/ while循环的表达式中使用函数,它将调用该函数而不是提供一个布尔值。 我需要检查此函数的值是否等于所需值。我确定这是一个预期的功能,但是我们没有被教过如何正确检查此功能,而且我已经找到了上述操作的任何参考。任何帮助表示赞赏。
string askYesNo(string question)
{
string playerChoice;
do
{
cout << question << " (YES/NO)" << endl;
cin >> playerChoice;
for (int i = 0; i < playerChoice.size(); i++)
{
playerChoice[i] = toupper(playerChoice[i]);
}
} while (playerChoice != "YES" && playerChoice != "NO");
return playerChoice;
}
void adventure()
{
if (askYesNo("You see a pile of gold in front of you. Do you want it?") == "YES")
{
cout << "As you approach, it moves forward and attacks you!\n";
do
{
askYesNo("\nDo you want to continue to battle?");
} while (askYesNo("\nDo you want to continue to battle?") == "YES");// WHY DOES THIS CALL THE FUNCTION?
}
else
{
cout << "Okay, cool.";
}
return;
}
期望测试功能是否为真。实际结果是调用函数,导致函数被调用两次。
答案 0 :(得分:1)
即使函数调用位于if语句内部,该函数仍将被调用。我不太确定Adventure()中的do-while循环的目的是什么,但是我建议这样做:
std::string answer;
do
{
answer = askYesNo("\nDo you want to continue to battle?");
} while (answer == "YES");
这样,该函数每次循环迭代仅被调用一次。希望这会有所帮助。