Я признаю, что << - бит-брейк и т.д., но я не знаю, что это в комбинации.
Ответ 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)