if-else 语句中的条件计算不正确

Condition within the if-else statement being evaluated incorrectly

本文关键字:计算 不正确 条件 语句 if-else      更新时间:2023-10-16

我的一个函数中有类似的东西,它返回 false。

if ((X = ax && Y == ay) || (X == bx && Y == ay) || (X == cx && Y == ay) || (X == ax && Y == by) || (X == cx && Y == by) || (X == ax && Y == cy) || (X == bx && Y == cy) || (X == cx && Y == cy))
    return true;
else
    return false;

但是,如果我使用相同的参数调用函数,但仅将代码更改为此函数,则返回 true。

if (X == bx && Y == ay)
    return true;
else
    return false;

为什么会这样?第二个代码中的条件是第一个代码中的条件之一,所以如果其中一个为真,它应该返回 true,对吗?我希望第一个条件返回 true

长条件开头附近的"="需要是"=="!您正在为 X 分配一个新值,而不仅仅是测试它,这会导致所有其他测试失败。

=是一个

赋值运算符,不小心使用它进行比较是一个常见的错误,这也是你的情况。在条件的第一部分中:(X = ax && Y == ay)通过ax来更改X的值,然后影响条件其余部分的结果。

另请注意:

if (A || B || C || D)
    return true;
else
    return false;

等于:

return (A || B || C || D);
if((X = ax && Y == ay) ||  //Problem is here

你需要做到

if((X == ax && Y == ay) || 

您的代码在 X = bxY = ay 时失败,就像在第一种情况下一样,值ax分配给 X ,这是TRUE,但Y不是ay这使得第一次比较为假。之后的所有比较计算结果为 false,这会导致第一个测试失败。