Почему я могу объединить побитовый оператор с математическим оператором, таким как & +, в Java? - PullRequest
3 голосов
/ 30 мая 2019

Сегодня я писал некоторый код и забыл, что пишу Java вместо Swift, и случайно набрал &+.Удивительно, но я не получил никаких ошибок, и код скомпилирован и работает нормально.

Я немного поиграл и обнаружил, что &+, &-, |+, |-, ^+ и ^- все компилируются и запускаются без ошибок.Похоже, что все они действуют как первый побитовый оператор при работе с числами:

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

С другой стороны, это похоже на любую другую комбинацию побитового оператора и математического оператора, например +&,&/ и ^*, все дают ошибки во время компиляции.

Почему &+, &-, |+, |-, ^+ и ^- компилируются иработать без ошибок?У них есть какая-то цель, которую я не вижу, или это просто странность компиляции?

1 Ответ

6 голосов
/ 30 мая 2019

+ обозначает Unary Plus Operator +, что приводит к положительному числу.

- означает Unary Minus Operator -, что приводит к отрицательному числу.

  • 1 &+ 2 является 1 & +2
  • 3 |- 4 - это 3 | -4
  • 7 ^+ 9 is 7 ^ +9

Обратите внимание, что операторы * и / нельзя использовать одинаково (1 &/ 2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...