2017-02-06 20 views
0

Я читал, что b1 |= b2 является ярлыком, эквивалентным b1 = b1 | b2. Мой вопрос действительно двоякий:В чем смысл сложных операторов сравнения?

Не является оператором присваивания, а не оператором сравнения? Если да, то что он делает в этом контексте?

Или, это оператор сравнения здесь и какой сценарий существует, где вам нужно будет сравнить переменную с самим собой (то есть b1 = b1)?

(.. Я понимаю, что это, вероятно, новичок-ЭСТ Newb вопрос, чтобы спросить, но я только получил неофициальный опыт написания сценариев и Баша нет образования в области программирования Будь добры;)

Примечания: это в связи с вопросом здесь: Shortcut "or-assignment" (|=) operator in Java

+1

'| =' не является сложным оператором сравнения. –

+3

Не существует составных операторов сравнения, только составных операторов присваивания. – Eran

+0

Является ли это логической вещью, где b1 будет истинным, если либо b1, либо b2 истинно? – NenTenEn

ответ

1

В Java много операторов. Но «оператор сравнения компаундов» не является одним из них. Вы должны прочитать основы Java из хорошей книги, такой как «Head first Java».

Чтобы ответить на этот конкретный вопрос, b1 |= b2 представляет собой сложное назначение.

  1. = присваивает результат b1|b2 к LHS операнда т.е. b1.
  2. Поскольку теперь понятно, что это оператор assignment, не сравнимый, результат b1 |= b1 будет таким же, как b1 = b1|b1.

(Примечание | здесь логические OR между двумя числами не ||, который является условным оператором. | и || имеют разные значения)

НТН.

+0

Спасибо за разъяснение. Вы хотели написать 'b1 = b1 | b2', а не' b1 = b1 | b1'? – NenTenEn

+0

Я имел в виду 'b1 = b1 | b1', в ответ на ваш второй вопрос, в котором у вас возникли сомнения в отношении той же переменной, которая используется с обеих сторон. – madcap