Ответы:
Это побитовый оператор сокращения . |a & b
означает, что вы применяете логическое ИЛИ ко всем битам a
(производя один бит), а затем делаете логическое И для этого бита и b
. |a
не имеет никакого эффекта, когда a
один бит.
Тем не менее, довольно часто можно увидеть побитовое уменьшение, применяемое к значениям одного бита. Одним типичным случаем является автоматически сгенерированный код, где фактическая ширина a
может зависеть от конфигурации. Другая возможность - это устаревший код, в котором a
когда-то было несколько битов. Когда значение a
стало единичным битом, эта строка была технически правильной, так что теперь ненужный оператор сокращения остался в.