我以前从未见过的C ++标志:| =

时间:2012-02-01 12:44:32

标签: c++

我在这里有一些代码:

case MONITORTYPE_WUXGA_SXGA_WXGA:
    bResult |= (var == enum1);
    bResult |= (var == enum2);

现在我知道它在做什么,但我不知道| =是什么。谁能告诉我那里?

5 个答案:

答案 0 :(得分:13)

a |= b

相同
a = a | b

这是bitwise OR操作。

答案 1 :(得分:5)

相当于:

bResult = bResult | (var == enum1);

就像a += b表示a = a + b一样,a |= b表示a = a | b

答案 2 :(得分:3)

对于C ++中的大多数二元运算符(比较运算符,关系运算符和布尔运算符除外),都存在相应的复合赋值运算符♢=

也就是说,|=只是|的复合赋值运算符,它是按位或。它的用途完全等同于+=*=等。所以

a |= b;
// is equivalent to
a = a | b;

答案 3 :(得分:2)

这是一个按位OR。它与bResult = bResult | (value)相同。在这种情况下,如果var是enum1或enum2,则将bResult设置为true。

答案 4 :(得分:1)

|按位或运算符。 a |= b等于a = a | b

有关按位操作的更多信息:http://en.m.wikipedia.org/wiki/Bitwise_operation