“| =”这是什么意思,这叫什么? (C ++)

时间:2014-02-28 00:22:27

标签: c++ operators

void show_node_names()   { display_flags |= ShowNodeNames; } // what is "|="?

我不确定“| =”是什么或它叫什么。 有什么帮助吗?

3 个答案:

答案 0 :(得分:4)

该陈述是按位或分配。

这相当于做display_flags = display_flags | ShowNodeNames

特别是,如果display_flags中的相应位为1,它会将ShowNodeNames中的每一位设置为1

答案 1 :(得分:3)

|=运算符是一个复合赋值运算符,如+=*=,但使用按位OR运算符。这条线

display_flags |= ShowNodeNames;

相当于

display_flags = display_flags | ShowNodeNames;

如果您还没有看到按位OR运算符,您应该阅读它以获取更多详细信息。如果您熟悉它,那么您可以将display_flags |= ShowNodeNames;视为一种说法“使ShowNodeNames中设置的所有位也设置在display_flags中。”

希望这有帮助!

答案 2 :(得分:2)

|(也可以拼写为bitor)是按位或运算符。它组合了每个操作数的位,以便在设置任一操作数的相应位时设置输出的每个位。将其与按位和运算符&bitand进行比较,其中每个位都设置为的两个操作数的相应位。< / p>

|=(或or_eq)是相应的赋值运算符。与所有复合赋值运算符一样,a |= b等同于a = a | b,但a仅计算一次。其效果是设置a中设置的b中的每个位,并保持其他位不变。