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/58325247/

相关文章:

java - 数据库服务器重新启动后,Quartz Scheduler 无法正常启动/恢复

java - HttpURLConnection Post 请求,使用来自 javax.rs.ws.Response 对象的响应进行响应

Java加密: encrypt integer values

c# - 三元运算符难读

C++ 三元运算符

java - Hibernate SQLite SQLITE_BUSY

java - 找不到错误 (StackOverflowError)

c++ - 在 C++ 中使用 std::cin 将 char 传递给 int

java - 如何将数组中的字符串更改为整数

r - 随时间变化的条件计数?