Risposte:
Questo è un operatore di riduzione bit-saggio . |a & b
significa che si applica un OR logico a tutti i bit di a
(producendo un singolo bit) e quindi si esegue un AND logico di quel bit e b
. |a
non ha alcun effetto quando a
è un singolo bit.
Tuttavia, è abbastanza comune vedere una riduzione bit-saggio applicata ai valori a bit singolo. Un caso tipico è il codice generato automaticamente in cui la larghezza effettiva di a
può dipendere dalla configurazione. Un'altra possibilità è che questo sia un codice legacy in cui a
una volta c'erano diversi bit. Quando è a
diventato un valore a singolo bit, questa riga era ancora tecnicamente corretta, quindi l'operatore di riduzione ora non necessario è stato inserito.