【发布时间】:2020-05-05 03:55:20
【问题描述】:
if 语句中的前两个语句之一为假,但我希望前两个语句都为假,以使代码不运行。请帮忙。
void change(Shore* left, Shore* right, int ex, int can) {
if (((ex!=left->lastMove[0]) && (can!=left->lastMove[1])) && (left->hasBoat)) {
我也尝试了下面的代码,但也没有用
if ((ex!=left->lastMove[0] && can!=left->lastMove[1]) && left->hasBoat) {
【问题讨论】:
-
请提供一个最小的工作示例......在SO的鲨鱼到达这里之前:))
-
And (
&&) 表示如果所有参数都为真,则 if 语句将起作用 - 因此,如果其中任何一个参数为假,它将不起作用。或 (||) 表示如果任何参数为真,则 if 语句将起作用 - 所以只有在所有条件都为假时才会起作用。所以你想要的是:if (left->hasBoat) if(ex!=left->lastMove[0] || can!=left->lastMove[0])首先检查 hasBoat 和然后检查任何其他条件是否为真。你可以在一个 if 条件下做到这一点,但它会更难阅读:if((ex!=left->lastMove[0] || can!=left->lastMove[0]) && left->hasBoat) -
这并不能解决问题,但大多数括号是不需要的。您可以像这样编写该表达式:
if (ex!=left->lastMove[0] && can!=left->lastMove[1] && left->hasBoat)。它的意思完全一样(这就是为什么第二个版本没有解决问题:它没有改变任何东西),但是,一旦你习惯了这种语言,它就会更容易阅读。
标签: c++ if-statement multiple-conditions