What does |= signify in C++?
当我遇到|=的时候,我正在浏览英特尔的深度学习框架caffe的源代码。我以前从未在任何代码中看到过这一点。事实上,我在代码中发现了两次。第188行:
1
| need_backward |= blob_need_backward_[blob_id]; |
第254行:
1
| need_backward |= param_need_backward; |
我知道它们都被封装在一个for循环中,这可能意味着某种关系。我只是假设。
- 我投票结束这个问题,因为这是一个关于充分记录的基本语法的问题。
- 向下滚动到"按位包含或和赋值运算符"
- |是位或运算符。X op= Y是X = X op Y的简写。因此,|=执行两个参数的位或,并将结果分配给第一个参数。
- 我也投票结束这个问题。对于op:so中的文档在这里:stackoverflow.com/documentation/c%2b%2b/2572/bit operators/8‌&8203;513/…
- 我也不想让你泄气,或者实际上:我想——我想知道你是否应该从简单的事情开始。
这是"按位或赋值"计算赋值运算符。
相当于:
有许多类似的运算符:+=、-=、*=等。
参见:操作员分配
|=是一个复合赋值。
|= 表示 = | 。
它是递增的OR与+=的位等价物。你可以用C++中的大多数数学运算符来实现这一点。
|是按位OR,因此您要将变量重新分配给它的OR结果。
它是
1
| need_backward = need_backward | param_need_backward; |
您正在执行位或操作
- 我认为它不同于长版本,因为左手边只评估一次。设想一个带有副作用的函数调用,返回一个引用。