|
является побитовым оператором или.
foo(1 | 2 | 1);
означает вызов foo с аргументом 1 побитовый или 2 побитовый или 1 .
1
в двоичном виде - 01
2
в двоичном - 10
Побитовый или 01
, а 10
- 11
это десятичное число 3.
Обратите внимание, что оператор |
может использоваться и для логических значений.Отличие от оператора ||
состоит в том, что второй операнд вычисляется, даже если первый операнд оценивается как true
.
На самом деле все побитовые операторы также работают на логических значениях, включаяxor ^
.Здесь, однако, нет соответствующего логического оператора.(Это было бы излишним, так как невозможно выполнить «ленивую» оценку ^
:)