【问题标题】:What does |= signify in C++? [closed]|= 在 C++ 中表示什么? [关闭]
【发布时间】:2017-04-16 20:56:36
【问题描述】:

我在浏览英特尔深度学习框架 Caffe 的源代码时,偶然发现了|=。我以前从未在任何代码中看到过这种情况。事实上,我在代码中发现了两次。 Line 188:

need_backward |= blob_need_backward_[blob_id];

line 254:

need_backward |= param_need_backward;

我意识到它们都位于一个 for 循环中,这可能表示某种关系。我只是假设。

【问题讨论】:

  • 我投票结束这个问题,因为这是一个关于充分记录基本语法的问题。
  • Scroll down here "按位包含 OR 和赋值运算符"
  • | 是按位或运算符。 X op= YX = X op Y 的简写。因此,|= 对两个参数执行按位或并将结果分配给第一个参数。
  • 我也不想让你气馁,或者实际上:我想 -- 我想知道你是否应该从更简单的事情开始。

标签: c++ caffe


【解决方案1】:

|= 是一个复合赋值。

<var> |= <expr> 表示<var> = <var> | <expr>

它是按位 OR 等效于 += 用于递增。您可以使用 C++ 中的大多数数学运算符来做到这一点。

|bitwise OR,因此您将一个变量重新分配给它的 OR'd 结果。

【讨论】:

    【解决方案2】:

    这就是“按位或赋值”复合赋值运算符。

    x |= y;
    

    相当于:

    x = x | y;
    

    有许多类似的运算符:+=、-=、*= 等。

    见:operator_assignment

    【讨论】:

      【解决方案3】:

      是简写

      need_backward = need_backward | param_need_backward;
      

      您正在执行按位或运算

      【讨论】:

      • 我认为它与长版本的不同之处在于左侧只评估一次。想象一个有副作用的函数调用,返回一个引用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 2015-10-22
      • 2019-04-17
      • 2016-01-07
      • 1970-01-01
      相关资源
      最近更新 更多