web-dev-qa-db-ja.com

<< =および| =の意味

Cでの<<=および|=の意味は何ですか?

私は<<がビットシフトなどであることを認識していますが、これらがどのように組み合わされているのかわかりません。

22
SK9

x += 5x = x + 5を意味するのと同様に、x <<= 5x = x << 5を意味します。

|も同様です。これはビット単位のorであるため、x |= 8x = x | 8を意味します。

明確にするための例を次に示します。

int x = 1;
x <<= 2;         // x = x << 2;
printf("%d", x); // prints 4 (0b001 becomes 0b100)

int y = 15;
y |= 8;          // y = y | 8;
printf("%d", y); // prints 15, since (0b1111 | 0b1000 is 0b1111)
36
Chris Cooper