【问题标题】:I think that is a misstake on all internet sites which a saw and in all books about java which i saw about the precedence table! (syntax misstake)我认为这是所有网站上的一个错误,我在所有关于 Java 的书籍中看到了关于优先表的内容! (语法错误)
【发布时间】:2022-01-16 09:36:19
【问题描述】:

朋友们,我是来自中国的 c++、c、python 和 c# 开发人员。 所有Javabook 和所有Internet 站点,我在自己的文章中看到的,Java 中的先例就像我的文本下的表格。 优先表说: +expr 和 -expr 超过加法 + 和 - 以及乘法,如 *、/ 和 %。

例如

b*-a 将被解释为(b)*(-a),这对表格来说是正确的。

但是,当我跟着桌子走时

a+b 不应该工作,因为我在网站上看到的所有书籍中的优先表都说 Java 应该这样解释它:

a(+b) 

所以我们应该得到一个错误而不是加法,但是java在a和b之间进行了加法,但通常这不应该是加法,当我遵循优先表时。

当我创建 a++b 时,java 会将优先级表解释为 a+(+b),但通常,当我遵循优先级表时,像 a+b 这样的添加应该不起作用,因为优先级表说不是加法!

precedence table a little bit of them

【问题讨论】:

  • 不能写a++b,会导致语法错误。
  • 欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 以了解如何提高问题的质量。然后查看help center 以查看该站点上的主题问题。您尚未提出任何问题或解释问题所在。
  • 是的,因为 (a++)b dthat 对优先级表来说是正确且正确的,所以那将不起作用,但是 a+b 也不应该起作用,因为优先级表说我们需要解释它就像 a(+b)
  • 但是a+++b应该不是问题,但是当我按照优先级表时,它是一个问题!
  • 您可能想检查其他问题,例如stackoverflow.com/questions/36061185/…

标签: java


【解决方案1】:

问题在于“一元加号”和“二元加号”是不同的运算符,它们恰好在源代码中使用相同的字符。

因此,首先,有必要确定给定的“+”是一元加号运算符还是二元加号运算符。 只有在那之后你才担心优先级。

Java 语言规范中的语法表示应该清楚。鉴于我们处于需要“表达式”的上下文中并且我们有“a+b”,我们不能在表达式中间开始语法分析并确定“+b”是一元表达式,忽略前面的字符。相反,我们从左到右解析,将“a+b”识别为加法表达式(根据书面语法,其中“a”和“b”都是乘法表达式,依次是一元表达式)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多