Сегодня я писал некоторый код и забыл, что пишу Java вместо Swift, и случайно набрал &+
.Удивительно, но я не получил никаких ошибок, и код скомпилирован и работает нормально.
Я немного поиграл и обнаружил, что &+
, &-
, |+
, |-
, ^+
и ^-
все компилируются и запускаются без ошибок.Похоже, что все они действуют как первый побитовый оператор при работе с числами:
1 &+ 2 == 1 & 2
3 |+ 4 == 3 | 4
7 ^+ 9 == 7 ^ 9
С другой стороны, это похоже на любую другую комбинацию побитового оператора и математического оператора, например +&
,&/
и ^*
, все дают ошибки во время компиляции.
Почему &+
, &-
, |+
, |-
, ^+
и ^-
компилируются иработать без ошибок?У них есть какая-то цель, которую я не вижу, или это просто странность компиляции?