Значение <<= и |=

#c #operators #semantics #bit-shift #logical-operators

#c #операторы #семантика #битовый сдвиг #логические операторы

Вопрос:

Что означает <<= и |= в C?

Я распознаю << битовый сдвиг и т.д., Но я не знаю, что это за комбинация.

Ответ №1:

Как x = 5 означает x = x 5 , так и x <<= 5 означает x = x << 5 .

То же самое касается | . Это побитовое, or поэтому x |= 8 это означало бы x = 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)