2016-12-02 6 views
-4

Я искал исходный код системы глубокого обучения Intel Caffe, когда я наткнулся на |=. Я никогда не видел этого раньше в любом коде. Фактически, я нашел его дважды в коде. Line 188:Что означает | = означает на C++?

need_backward |= blob_need_backward_[blob_id]; 

и line 254:

need_backward |= param_need_backward; 

Я понимаю, что оба они расположены в цикле, который может означать какое-то отношение. Я просто предполагаю.

+6

Я чтобы закрыть этот вопрос как вне темы, потому что это вопрос о адекватно документированном базовом синтаксисе. –

+1

[Прокрутить страницу вниз] (https://www.tutorialspoint.com/cplusplus/cpp_operators.htm) «побитовый включительно оператор OR и присваивания» – Jhecht

+0

'|' является побитовым оператором ИЛИ. 'X op = Y' является сокращением для' X = X op Y'. Таким образом, '| =' выполняет побитовое ИЛИ двух аргументов и присваивает результат первому. – Amadan

ответ

1

это сокращение для

need_backward = need_backward | param_need_backward; 

вы выполняете побитовое или операции

+0

Я думаю, что он отличается от длинной версии тем, что левая сторона оценивается только один раз. Представьте вызов функции с побочным эффектом, возвращая ссылку. –

2

|= является назначение соединения.

<var> |= <expr> означает <var> = <var> | <expr>

Это побитовое OR эквивалент += для приращения. Вы можете сделать это с помощью большинства математических операторов в C++.

|bitwise OR, поэтому вы переназначаете переменную до ее результата OR.

2

Это оператор вспомогательного присваивания «побитовое присвоение».

x |= y; 

эквивалентно:

x = x | y; 

Есть целый ряд подобных операторов: + =, - =, * = и т.д.

См: operator_assignment

Смежные вопросы