java - 检查 int 是否在两个数字之间

标签 java integer conditional-operator

如果你试图找出一个 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/

相关文章:

java - 游戏开发中的CPU还是RAM?

java - 将图像保存到内部存储器

Python自己改变Float中的Integer

Python 无限整数

ruby - 样式/条件分配 : Use the return of the conditional for variable assignment and comparison

c++ - 在 `?:` 代码中奇怪地使用 `typeid`

根据更新请求插入 Java

java - 我可以使用 mockito 来匹配具有自动更新时间戳的对象吗?

从其字节计算整数会给出奇怪的错误结果

mysql - 如何在 MySQL 中实现三元条件运算符