什么是运算符`| =`?我怎样才能在C#中实现它?

Rya*_*n R 3 c# c++ operators

下面的C++代码是做什么的?更具体地说,运营商是|=什么?

long liFaultFlags = 0;

for (int i = 0; i < FAULTCOUNT; i++)
{
    if (faults[i] == true)
    {
        liFaultFlags |= (1 << i);
    }
}

return liFaultFlags;
Run Code Online (Sandbox Code Playgroud)

如何在C#中实现?

Ed *_* S. 14

它是按位OR运算符,相当于

liFaultFlags = liFaultFlags | (1<<i);
Run Code Online (Sandbox Code Playgroud)

您可以在C#中以完全相同的方式编写该行.

  • 为了迂腐,我会称它为"按位OR"而不是"二进制OR". (5认同)

Jon*_*Jon 8

操作者|=不按位OR和分配集于一身(很像+ =确实整数加法和分配一起).

它在C#中完全相同.