繁体   English   中英

if语句有什么问题

[英]what is wrong with this if-statement

我绝对不知道if语句有什么问题,当我发送值lon = -3和lat = 7时,它应该返回false,但不会。

  if (b < 0 && ((lon > 8 && lon < 0) || (lat > 8 && lat < 0)))
  {

    return false;
  }
  else
  {
    return true ;
  }

分解每个值...

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; 整数= 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!

尽管此if语句在逻辑上存在缺陷,但也许这里仍有一些要学习的地方。 除了评估if语句然后返回truefalse ,您还可以对其进行清理,然后执行以下操作:

return b < 0 && ((lon > 8 && lon < 0) || (lat > 8 && lat < 0))

但是回到逻辑错误,也许是您对不等式运算符如何工作的理解。 如果您执行了lon > 0 && lon < 8这样的操作,它将读为经度大于零且小于八,那将更有意义。

如果我正确阅读了您的陈述,您将永远不会出错。 要获得假lon,我必须小于零且大于8 ...这是不可能的。 与lat相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM