简单的逻辑问题:检查x是否在2个数字之间

时间:2011-08-31 06:19:30

标签: logic compare range

我想看看变量是否在一系列值之间,例如,如果x在20到30之间,则返回true。

最快的方法是什么(使用任何基于C的语言)?

显然可以使用for循环来完成:

function inRange(x, lowerbound, upperbound)
{
  for(i = lowerbound; i < upperbound; i++)
  {
    if(x == i) return TRUE;
    else return FALSE;
  }
}
//in the program
if(inRange(x, 20, 30))
   //do stuff

但执行if(inRange(x, 20, 30))是否比使用内置函数更简单的逻辑是非常繁琐的?

2 个答案:

答案 0 :(得分:5)

你想要的表达是

20 <= x && x <= 30

编辑:

或者简单地输入一个函数

function inRange(x, lowerbound, upperbound)
{
  return lowerbound <= x && x <= upperbound;
}

Python有一个in运算符:

>>> r = range(20, 31)
>>> 19 in r
False
>>> 20 in r
True
>>> 30 in r
True
>>> 31 in r
False

同样在Python中,这非常酷 - 比较运算符被链接!这与C和Java完全不同。见http://en.wikipedia.org/wiki/Python_syntax_and_semantics#Comparison_operators

所以你可以写

low <= x <= high

在Python中,-10 <= -5 <= -1为True,但在C中则为false。试试吧。 :)

答案 1 :(得分:3)

为什么不只是x >= lowerbound && x <= upperbound