gpt4 book ai didi

java - 数字提升仅适用于算术运算符?

转载 作者:行者123 更新时间:2023-12-04 09:07:48 24 4
gpt4 key购买 nike

JLS 声明数字提升应用于算术运算符的操作数。

Numeric promotion is applied to the operands of an arithmetic operator.Numeric promotion contexts allow the use of:an identity conversion (§5.1.1)a widening primitive conversion (§5.1.2)an unboxing conversion (§5.1.8)


但是,根据我的经验,我发现数字提升也适用于其他运算符(如按位运算符)的操作数。我发现了 this其中指出

These conversions can occur when using the multiplicative operators (%, *, /), additive operators (+, -), comparison operators (<, >, <=, >=), equality operators (==, !=), and the integer bitwise operators (&, |, ^).


所以我错过了什么吗?
编辑:未列出的其他运算符(如 &&、||、>>、<<、>>> 等)呢?
编辑 2:正如@Turing85 和@Stephen C 所指出的,这个问题只对 JLS 5 到 11 有效,现在已经解决。

最佳答案

您找到的文本出现在 JLS section 5.6 中.值得注意的是以下几点:

  • 这是介绍性描述性文本,而不是规范性文本。
  • 它没有确切说明“算术”运算符在这种情况下的含义。
  • 相反,它并没有说数值提升不适用于(可以说)不是“算术”运算符的其他运算符。

  • 如果您继续阅读 5.6.1 部分和 5.6.2 ,您将找到一元和二元数字促销适用的运算符。
    请注意,上述内容适用于 JLS 第 5 版和第 11 版。到 JLS 14,他们将第 5.6.1 和 5.6.2 节折叠成第 5.6 节。 .措辞发生了变化(删除了您认为自相矛盾的文字)。相关的运营商都(仍然)列出。
    (这是编辑整理,而不是实际语言语义的变化。)

    关于java - 数字提升仅适用于算术运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63415067/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com