我完全不知道这个if语句有什么问题,当我发送值lon = -3和lat = 7时,它应该返回false,但它不会。
if (b < 0 && ((lon > 8 && lon < 0) || (lat > 8 && lat < 0)))
{
return false;
}
else
{
return true ;
}
答案 0 :(得分:1)
分解每个值......
int lon = -3;
int lat = 7;
if (b < 0 && // i don't know b value
((-3 > 8 && //false
-3 < 0) //true
|| (7 > 8 && //false
7 < 0 //false
)))
{
return false;
}
else
{
return true ;
}
导致 int lon = -3; int lat = 7;
if (b < 0 && // i don't know b value
(false || false))
{
return false;
}
else
{
return true ;
}
最后是:
if (false)
{
return false;
}
else
{
return true ;
}
然后它返回true!
答案 1 :(得分:1)
虽然这个if
声明的逻辑存在缺陷,但也许还有一些东西需要学习。不是评估if
语句然后返回true
或false
,而是可以清理一下,然后执行以下操作:
return b < 0 && ((lon > 8 && lon < 0) || (lat > 8 && lat < 0))
但回到逻辑错误,也许你对不平等运算符如何运作的理解。如果您执行lon > 0 && lon < 8
之类的操作会更有意义,因为经度大于零且小于8 。
答案 2 :(得分:-1)
如果我正在阅读你的陈述,你将永远不会变得虚假。为了得到假lon必须小于零且超过8 ......这是不可能的。与lat相同的情况。