if-else 语句中的条件计算不正确
Condition within the if-else statement being evaluated incorrectly
我的一个函数中有类似的东西,它返回 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
= bx
和 Y
= ay
时失败,就像在第一种情况下一样,值ax
分配给 X
,这是TRUE
,但Y
不是ay
这使得第一次比较为假。之后的所有比较计算结果为 false,这会导致第一个测试失败。
相关文章:
- 正弦级数方程计算不正确
- 计算幂级数的数学结果不正确
- 我的程序中的值计算不正确,即使支持数学是正确的
- 编译器在构造函数中计算的成员偏移量不正确
- 堆排序它不起作用或计算不正确
- 计算不正确
- C :不正确的文件大小计算Winapi
- 为什么此 stl 函数调用会导致不正确的布尔计算
- 平均计算不正确
- 斐波那契函数计算不正确
- 光线拾取方向计算不正确
- 为什么skb_transport_header计算不正确
- 逻辑错误:平均质心计算不正确,无限执行,'entries '函数 - K 表示一组点的聚类,以C++为单位
- 字符/int相等计算不正确
- C 加加计算不正确
- if-else 语句中的条件计算不正确
- CRC32计算不正确
- C++使用std::accumulate计算不正确的标准差
- 阴影贴图的纹理坐标计算不正确
- 这种情况似乎不起作用。(while (dAmount != (2*dbAmount)))此外,第一次计算不正确 o.O