如果你试图找出一个 int 是否介于两个数字之间,为什么不能这样做:
if(10 < x < 20)
你必须这样做
if(10<x && x<20)
这似乎有点开销。
最佳答案
一个问题是三元关系构造会引入严重的解析器问题:
<expr> ::= <expr> <rel-op> <expr> |
... |
<expr> <rel-op> <expr> <rel-op> <expr>
当您尝试使用典型的 PGS 来表达带有这些产生式的语法时,您会发现在第一个 <rel-op>
处存在移位归约冲突。 .解析需要先看任意数量的符号,看看是否有第二个 <rel-op>
在它可以决定是使用二进制还是三元形式之前。在这种情况下,您不能简单地忽略冲突,因为这会导致解析不正确。
我并不是说这个语法是致命的模棱两可。但我认为你需要一个回溯解析器来正确处理它。对于以快速编译为主要卖点的编程语言来说,这是一个严重的问题。
关于java - 检查 int 是否在两个数字之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992970/