按位包含或运算符 |

| (按位包含 OR) 运算符比较每个操作数的值 (采用二进制格式) ,并生成一个值,其位模式显示任一操作数中的哪些位具有值 1。 如果这两个位都是 0,那么该位的结果为 0; 否则,结果为 1

两个操作数都必须具有整数或枚举类型。 对每个操作数执行通常的算术转换。 结果的类型与转换后的操作数相同,不是 lvalue。

因为按位包含 OR 运算符同时具有关联属性和交换属性,所以编译器可以在包含多个按位包含 OR 运算符的表达式中重新排列操作数。 请注意, | 字符可以由 trigraph ??!表示。

以下示例显示了 ab的值以及以 16 位二进制数字表示的 a | b 的结果:

注: 不应将按位 OR (|) 与逻辑 OR (||) 运算符混淆。 例如
   1 | 4 求值为 5
,而
1 || 4 求值为 true