c和c ++运算符有帮助

use*_*514 2 c c++

谁可以向我解释为什么以下结果b = 13?

int a, b, c;
a = 1|2|4;
b = 8;
c = 2;
b |= a;
b&= ~c;
Run Code Online (Sandbox Code Playgroud)

Bil*_*ill 16

它使用二元操纵器.(假设整数是1个字节,并使用二进制补码进行存储等)

a = 1|2|4表示a = 00000001 or 00000010 or 00000100,即00000111或7.
b = 8表示b = 00001000.
c = 2手段c = 00000010.
b |= a装置b = b | a,这意味着b = 00001000 or 00000111,它是00001111,或15
~c的装置not c,其是11111101.
b &= ~c手段b = b & ~c,这意味着b = 00001111 and 11111101,它是00001101,或13.