【问题标题】:Why can I combine a bitwise operator with a math operator, like &+, in Java?为什么我可以在 Java 中将位运算符与数学运算符(如 &+)结合起来?
【发布时间】:2019-05-30 19:28:52
【问题描述】:

我今天早些时候在写一些代码,忘记了我写的是 Java 而不是 Swift 并且不小心输入了&+。令人惊讶的是,我没有收到任何错误,并且代码编译并运行良好。

我玩了一下,发现&+&-|+|-^+^-都编译运行没有错误。看起来它们在作用于数字时都像第一个按位运算符:

1 &+ 2 == 1 & 2
3 |+ 4 == 3 | 4
7 ^+ 9 == 7 ^ 9

另一方面,位运算符和数学运算符的任何其他组合,如+&&/^*,似乎都会产生编译时错误。

为什么&+&-|+|-^+^- 编译和运行不会出错?它们有什么我看不到的目的,还是只是一些编译异常?

【问题讨论】:

  • 您只是格式错误。 1 &+ 2 实际上是 1 & +2。您可以在任何号码前加上 +-

标签: java operators


【解决方案1】:

+ 代表Unary Plus Operator +,结果为正数。

- 表示 Unary Minus Operator - 产生负数。

  • 1 &+ 21 & +2
  • 3 |- 43 | -4
  • 7 ^+ 97 ^ +9

请注意,*/ 运算符不能以相同的方式使用 (1 &/ 2)。

【讨论】:

  • 正确命名,+ 符号是 Unary Plus Operator-Unary Minus Operator
  • 为了感兴趣,还需要指出:没有负整数文字这样的东西。它是一元减号运算符和非负整数文字。你可以看到这一点,因为你不能写 -2147483648,即使它表面上等于 Integer.MIN_VALUE,因为它被解释为 - 然后 2147483648,这对于 int 文字来说太大了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
相关资源
最近更新 更多