奇怪的运营商"| ="

Mik*_*ike 2 c c++ operators

我是相对较新的编码,无论如何我在复制iphone像素技术的教程时遇到了这个if语句,无论如何我不确定它在做什么,所以如果有人能为我解释那将是非常棒的谢谢.

for(int j = 0; j < (width * height); j++ ) 
{
    if ( pixels[j] & 0xff000000 )  
    {
        collisionMap[j] |= 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

困扰我的部分是'| ='和单个'&'符号.这里发生了什么?谢谢

The*_*uck 6

&是一个按位AND.

| =是按位OR并将值赋给collisionMap[j].

  • 也就是说"collisionMap [j] | = 1;" 与"collisionMap [j] = collisionMap [j] | 1;"相同 (2认同)