Bitwise OR Assignment Operator (|=)
Performs a bitwise OR on the value of a variable and the value of an expression and assigns the result to the variable.
Using this operator is almost the same as specifying result = result | expression, except that result is only evaluated once.
The |= operator coerces the arguments to matching data types. Then the |= operator looks at the binary representation of the values of result and expression and does a bitwise OR operation on them. The result of this operation behaves like this:
0101 (result) 1100 (expression) ---- 1101 (output)
Any time either of the expressions has a 1 in a digit, the result has a 1 in that digit. Otherwise, the result has a 0 in that digit.