我正在开发这款游戏,要求玩家再次玩。我习惯于检查条件是否不满足然后返回 false,所以最后我可以简单地添加 return true。这也有助于嵌套。
如果我以相反的方式这样做,它会起作用:
bool AskToPlayAgain() {
cout << "Do you want to play again? ";
string Response = "";
getline(cin, Response);
if (Response[0] == 'y' || Response[0] == 'Y')
{
cout << "True!\n";
return true;
}
cout << "False!\n";
return false;
}
这将对 y 和 Y 返回 true,对所有其他字符返回 False。
然而。我想要的方式是这样的:
if (Response[0] != 'y' || Response[0] != 'Y')
{
cout << "False!\n";
return false;
}
cout << "True!\n";
return true;
只是,无论响应如何,它始终会验证为 false。这是为什么?我该如何解决它?
如果反转两边的条件,则还必须反转运算符。也就是说,||
变成&&
反之亦然。 (德摩根定律 https://en.wikipedia.org/wiki/De_Morgan%27s_laws)
想一想:Response[0]
只有一个值,因此它不能等于两个值,因此它必须始终不等于两个值之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)