Во многих языках второй путь будет оцениваться слева направо неправильно относительно того, что вы хотите.
В C, например, 1990 < year
будет оцениваться в 0 или 1, который затем становится1 < 2099
, что, конечно, всегда верно.
Javascript очень похож на C: 1990 < year
возвращает true
или false
, и эти логические выражения, кажется, численно сравниваются равными 0 и1 соответственно.
Но в C # он даже не скомпилируется, что выдает ошибку:
ошибка CS0019: Оператор '<' нельзя применить к операндам типа 'bool'and' int '</p>
Вы получаете похожую ошибку от Ruby, в то время как Haskell говорит, что вы не можете использовать <
дважды в одном и том же выражении инфикса.
Вверхумоя голова, Python - единственный язык, который, я уверен, обрабатывает настройку «между» таким образом:
>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
Суть в том, что первый способ (x < y && y < z)
всегда самая безопасная ваша ставка.