2015-11-05 6 views
-4

У меня есть заявление в программе C кем-то другим в этом формате int variable |= functioncall(parameter); Я не понимаю использование OR '|' войдите в это заявление. Может кто-нибудь объяснить, что он делает с оператором присваивания. Я угадываю поразрядное ИЛИ, а затем назначаю.C OR '|' оператор

+1

Ваша догадка правильная. C имеет множество операторов присваивания, таких как '+ =' или '* ='. –

+1

Вы пробовали [основной поиск] (https://en.wikipedia.org/wiki/Bitwise_operations_in_C#Bitwise_assignment_operators)? – kaylum

+1

'a | = b' то же, что и' a = a | b' Google - ваш друг – tesseract

ответ

2

|= - побитовый оператор присваивания OR. В основном, a |= b означает a = a | b.

Пожалуйста, проверьте this Wikipedia article на список всех таких сложных операторов присваивания.

Ибо здесь, точный смысл всего заявления someVar |= functioncall(parameter); является:

  1. Compute возвращаемого значение functioncall(parameter), а затем,
  2. побитового ИЛИ на возвращаемом значении и исходное значение someVar,
  3. И, наконец, назначить результат побитового ИЛИ someVar.
+0

В C он не может быть перегружен. – immibis

+0

@immibis oops. Удален этот абзац, поскольку пользовательская перегрузка оператора не поддерживается в C. – FelisCatus