Дополнительно
Проверьте, если интервал между двумя числами
Почему может'т вы это, если вы пытаетесь выяснить, является ли интервал между числам:
if(10 < x < 20)
Вместо этого, вы'придется делать
if(10<x && x<20)
что кажется немного накладные расходы.
30
10
Одна из проблем заключается в том, что тернарный реляционных построить внесет серьезные проблемы парсера:
Когда вы пытаетесь выразить грамматика с тех производств, используя типичный ПГС, вы'll найти, что есть сдвиг-уменьшить конфликт в точке первого в
<отн-ОП>
. Синтаксический анализ должен впередсмотрящим произвольное количество символов, чтобы увидеть, если есть вторая в<отн-ОП>
прежде чем он может решить, стоит ли бинарные или тройные форма была использована. В этом случае, вы не могли просто игнорировать конфликт, потому что это привело бы к неверному разбирает.Я'м не говорю, что эта грамматика является смертельно неоднозначное. Но я думаю, что вы'd нужен отката парсер, чтобы правильно справиться с ней. И что представляет собой серьезную проблему для языка программирования, где быстрая компиляция является главным пунктом продажи.
Это's просто синтаксис. '<' - это бинарная операция, и большинство языков, Дон'т сделать его переходящим. Они могли бы сделать это, как вы говорите, но потом кто-то будет спрашивать, почему вы можете'т сделать другие операции в троичной, а также. "Если (12 < х != 5) на"?
Синтаксис-это всегда компромисс между сложностью, выразительностью и понятностью. Разные дизайнеры языке делать различные выборы. Например, в SQL есть и"x между Y и Z и", где X, Y и Z могут по отдельности или всех столбцов, константы, или связанными переменными. И я'м счастлив, чтобы использовать его в SQL, и я'м счастливы одинаково не беспокоиться о том, почему это's не в Java.
Потому что синтаксис просто не'т определяется? Кроме того,
х &л; г
значение типа bool, так чтотипа bool < инт
означает? Это'т действительно накладных; кроме того, можно написать утилиту способ если вы действительно хотите -между ними(10,х,20)
- я бы'т себя, но...Вы можете сделать свой собственный
Редактировать: извините проверяет, если c лежит между A и B
Неудобство набора текста
10 в < х && х < 20-минимален по сравнению с увеличением языковой сложности, если можно было бы разрешить
10 в < х < 20`, так что разработчики языка Java решили отказаться от его поддержки.Коболев допускает, что (я уверен, что некоторые другие языки также). Ява унаследовала большую часть его'ы синтаксис от C, которая не'т позволю.
Ты человек, и поэтому вы понимаете, что термин "и 10 < х < 20" и значит. Компьютер не'Т есть эта интуиция, поэтому он читает это как: на "(10 < х) < 20" по.
Например, если Х = 15, это будет рассчитать:
(10 < х) => правда
на "Правда < 20" в => ???
В программировании на C, это будет хуже, так как нет истинного\ложные ценности. Если x = 5, то расчет будет:
10 < х => 0 (значение false)
0 < 20 => не-0 число (истинно)
и поэтому на "10 &л; 5 < 20", которая будет возвращать true! :С
Потому что в
<
оператор (и большинство других) являются бинарными операторами (они принимают два аргумента), и `(правда-правда) - это не допустимое логическое выражение.В Java конструкторы язык мог создать язык, чтобы позволить синтаксис как тип вы предпочитаете, но (я'м предполагаю) они решили, что он не стоил более сложные правила разбора.
упрощение:
Если (10 < х || х < 20)
Это заявление будет оценивать справедливо для чисел между 10 и 20. Это примерный эквивалент до 10 < х < 20`