我遇到过类似的代码
if (flagsDef)
flagsTainted |= flagsUsed;
请协助了解所用运算符的含义。
该声明:
flagsTainted |= flagsUsed
是以下的简写:
flagsTainted = flagsTainted | flagsUsed
它使用二进制/按位 OR 运算符|
。
该代码正在操作一个标志变量,该变量通过设置变量中的位来保存状态信息flagsTainted
。
有关按位操作的更多信息,维基百科文章非常好。
|
是按位或。这意味着它使用或运算符比较位。
例如:
101
001
如果你|
两个,你得到 101。= 将结果分配回操作的左侧。
它可以用英语读作“或等于”。
它类似于 += ,除了不是将左侧值添加到右侧,而是执行两个值的按位或,然后将结果分配给左侧变量,正如您所期望的那样。
有关按位运算的更多信息,请参阅此链接: Wikipedia