1

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

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

4

3 回答 3

5

靠近长条件开头的“=”必须是“==”!您正在为 X 分配一个新值,而不仅仅是对其进行测试,这会导致所有其他测试失败。

于 2013-03-17T15:40:07.007 回答
4

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

另请注意:

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

等于:

return (A || B || C || D);
于 2013-03-17T15:42:47.533 回答
3
if((X = ax && Y == ay) ||  //Problem is here

你需要做到

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

您的代码对于X= bxY=失败,ay因为在第一种情况下,该值ax被分配给X,即TRUE,但Y不是ay这使得第一次比较为假。之后的所有比较都评估为 false,这会导致第一次测试失败。

于 2013-03-17T15:40:43.667 回答