Что означает "| =" в Java? - PullRequest
       6

Что означает "| =" в Java?

3 голосов
/ 06 августа 2010

Обратите внимание, мой вопрос касается не !=, а |=

Пример использования: здесь

Я предполагаю, что x |= y совпадает с x = x | y но я не смог найти подтверждающую документацию и хотел быть уверен

Спасибо

Ответы [ 4 ]

7 голосов
/ 06 августа 2010

Это побитовое «или» плюс присвоение, так что вы совершенно правы в своем предположении.

4 голосов
/ 06 августа 2010

Да, это битовое включение или присвоение: http://www.cafeaulait.org/course/week2/03.html

3 голосов
/ 06 августа 2010

Точнее, x | = y фактически вычисляется как x = x | (У).

Вот интересный пример того, почему это важно.

int c = 2;
c %= c++ * ++c;

Интересным следствием здесь является то, что это будет записано как

c = c % (c++ * ++c);

Спецификации Java говорят нам, что JVM сначала увидит исходный c и сохранит его, все, что предшествует ему, не окажет на него никакого влияния, поэтому c ++ & ++ c фактически не повлияет на результат вычисления. Это всегда будет с = 2%, что равно 2:)

2 голосов
/ 06 августа 2010

Вы можете прочитать Спецификация Java Langauge

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