| =运算符在C ++中的含义是什么?

时间:2010-11-18 17:31:33

标签: c++ operators

在C ++中,| =运算符是什么意思?

4 个答案:

答案 0 :(得分:25)

假设您在整数上使用内置运算符,或者对用户定义的类使用了明确重载的运算符,这些都是相同的:

a = a | b;
a |= b;

|=”符号是按位OR赋值运算符。它计算RHS('b')与LHS('a')的OR值,并将结果赋给'a',但它只评估'a'一次。

'| ='运算符的一大优势是'a'本身就是一个复杂的表达式:

something[i].array[j]->bitfield |= 23;

VS

something[i].array[i]->bitfield = something[i].array[j]->bitfield | 23;

这种差异是故意的还是偶然的?

...

答案:故意 - 显示速记表达的优点......第一个复杂的表达式实际上等同于:

something[i].array[j]->bitfield = something[i].array[j]->bitfield | 23;

类似的评论适用于所有复合赋值运算符:

+= -= *= /= %=
&= |= ^=
<<= >>=

任何复合运算符表达式:

a XX= b

相当于:

a = (a) XX (b);

除了a仅评估一次。请注意这里的括号 - 它显示了分组的工作原理。

答案 1 :(得分:8)

x |= y

相同
x = x | y

相同
x = x [BITWISE OR] y

答案 2 :(得分:3)

这是一个按位OR compound assignment

与撰写x += y以表示x = x + y

的方式相同

您可以将x |= y写为x = x | y,将xy的所有位进行OR运算,然后将结果放在x。< / p>

请注意它可以是overloaded,但对于基本类型,你应该没问题: - )

答案 3 :(得分:1)

您可以尝试使用SymbolHound: the search engine for programmers搜索SO等网站,以获取此类符号。以下是SymbolHound上的results for | =。 -Tom(联合创始人SH)