这个if语句有什么问题

时间:2016-06-18 05:54:44

标签: c# if-statement

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

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

    return false;
  }
  else
  {
    return true ;
  }

3 个答案:

答案 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语句然后返回truefalse,而是可以清理一下,然后执行以下操作:

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

但回到逻辑错误,也许你对不平等运算符如何运作的理解。如果您执行lon > 0 && lon < 8之类的操作会更有意义,因为经度大于零且小于8

答案 2 :(得分:-1)

如果我正在阅读你的陈述,你将永远不会变得虚假。为了得到假lon必须小于零且超过8 ......这是不可能的。与lat相同的情况。