为什么我可以在Java中将按位运算符与数学运算符(如&+)结合使用?

时间:2019-05-30 19:28:53

标签: java operators

我今天早些时候在写一些代码,但是忘记了我是在用Java而不是Swift写Java,而偶然输入了&+。出乎意料的是,我没有遇到任何错误,并且代码已编译并运行良好。

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

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

另一方面,似乎像+&&/^*这样的按位运算符和数学运算符的任何其他组合都给出了编译时错误。

为什么&+&-|+|-^+^-编译并运行时没有错误?他们是否有我没有看到的目的,还是只是一些编译怪胎?

1 个答案:

答案 0 :(得分:6)

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

-表示Unary Minus Operator -,结果为负数。

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

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