Компилятор видит выражение, сформулированное из бинарных операторов. Символ <= является бинарным оператором, как и =,> =, ||, && и т. Д.
Как и в случае с арифметикой, существует порядок приоритетов, которому должен следовать компилятор, оценивая выражение, сформированное вокруг каждого бинарного оператора.
В арифметике вы, вероятно, знакомы с этим, как и с этими двумя примерами:
2 + 5 * 7 Это оценивается как 2+ (5 * 7) или 37, потому что умножение имеет приоритет перед сложением.
2 + 3 + 21 оценивается в том порядке, в котором термины читаются слева направо, поскольку другого правила приоритета не существует. Становится (2 + 3) + 21.
Таким образом, 100 <= x <= 150 является выражением аналогичного типа, в котором все двоичные операторы одинаковы и, следовательно, имеют одинаковый приоритет. Еще раз, это решено, оценивая это слева направо, таким образом это становится (100 <= x) <= 150. Если x> = 100, термин в скобках оценивается как TRUE, которое имеет числовое значение 1. Поскольку 1 меньше 150, остальные оцениваются как 1 <= 150, или TRUE, если x больше или равно 100. С другой стороны, он также оценивается как ИСТИНА, если х меньше 100, потому что второе сравнение становится 0 <= 150, что ИСТИНА. </p>
Другие рекомендации разбить это в скобках верны, если вы не уверены в порядке приоритета для двоичных операторов: (100 <= x) && (x <= 150). Вы также можете записать его как 100 <= x && x <= 150, так как порядок приоритета для сравнения значений выше, чем для логических операторов. </p>