按位 OR

int a = 5;     // 0101b  (0x05)
int b = 12;    // 1100b  (0x0C)
int c = a | b; // 1101b  (0x0D)

std::cout << "a = " << a << ", b = " << b << ", c = " << c << std::endl;

輸出

a = 5, b = 12, c = 13

為什麼

有點明智的 OR 在位級操作並使用以下布林真值表:

true OR true = true
true OR false = true
false OR false = false

a0101)的二進位制值和 b1100)的二進位制值是 OR‘時,我們得到 1101 的二進位制值:

int a = 0 1 0 1
int b = 1 1 0 0 |
        ---------
int c = 1 1 0 1

除非特別指定使用按位分配複合運算子|=,否則按位 OR 不會更改原始值的值:

int a = 5;  // 0101b  (0x05)
a |= 12;    // a = 0101b | 1101b