У меня есть заявление в программе C кем-то другим в этом формате int variable |= functioncall(parameter);
Я не понимаю использование OR '|' войдите в это заявление. Может кто-нибудь объяснить, что он делает с оператором присваивания. Я угадываю поразрядное ИЛИ, а затем назначаю.C OR '|' оператор
ответ
|=
- побитовый оператор присваивания OR. В основном, a |= b
означает a = a | b
.
Пожалуйста, проверьте this Wikipedia article на список всех таких сложных операторов присваивания.
Ибо здесь, точный смысл всего заявления someVar |= functioncall(parameter);
является:
- Compute возвращаемого значение
functioncall(parameter)
, а затем, - побитового ИЛИ на возвращаемом значении и исходное значение
someVar
, - И, наконец, назначить результат побитового ИЛИ
someVar
.
В C он не может быть перегружен. – immibis
@immibis oops. Удален этот абзац, поскольку пользовательская перегрузка оператора не поддерживается в C. – FelisCatus
Ваша догадка правильная. C имеет множество операторов присваивания, таких как '+ =' или '* ='. –
Вы пробовали [основной поиск] (https://en.wikipedia.org/wiki/Bitwise_operations_in_C#Bitwise_assignment_operators)? – kaylum
'a | = b' то же, что и' a = a | b' Google - ваш друг – tesseract