простой логический вопрос: проверьте, находится ли х между 2 числами - PullRequest
5 голосов
/ 31 августа 2011

Я хочу посмотреть, находится ли переменная между диапазоном значений, например, если 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 ]

6 голосов
/ 31 августа 2011

Вы хотите получить выражение

20 <= x && x <= 30

EDIT:

Или просто вставить в функцию

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. Попытайся. :)

3 голосов
/ 31 августа 2011

Почему не просто x >= lowerbound && x <= upperbound?

...