3

我遇到过类似的代码

if (flagsDef) 
flagsTainted |= flagsUsed;

请协助了解所用运算符的含义。

4

4 回答 4

11

该声明:

flagsTainted |= flagsUsed

是以下的简写:

flagsTainted = flagsTainted | flagsUsed

它使用二进制/按位 OR 运算符|

该代码正在操作一个标志变量,该变量通过设置变量中的位来保存状态信息flagsTainted

有关按位操作的更多信息,维基百科文章非常好。

于 2012-09-19T16:37:07.810 回答
3

a op= bis a = a op b, and|是按位运算or符(按位表示它适用于每个二进制数字)。

这是的真值表or

    0 1 
    ___
 0| 0 1
 1| 1 1
于 2012-09-19T16:38:12.513 回答
1

|是按位或。这意味着它使用或运算符比较位。

例如:

101
001

如果你|两个,你得到 101。= 将结果分配回操作的左侧。

于 2012-09-19T16:36:57.227 回答
0

它可以用英语读作“或等于”。

它类似于 += ,除了不是将左侧值添加到右侧,而是执行两个值的按位或,然后将结果分配给左侧变量,正如您所期望的那样。

有关按位运算的更多信息,请参阅此链接: Wikipedia

于 2012-09-19T16:39:11.190 回答