Este es un operador de reducción de bits . |a & b
significa que aplica un OR lógico a todos los bits de a
(que produce un solo bit) y luego hace un AND lógico de ese bit y b
. |a
no tiene ningún efecto cuando a
es un solo bit.
Sin embargo, es bastante común que la reducción de bits se aplique a valores de bits únicos. Un caso típico es el código generado automáticamente donde el ancho real de a
puede depender de la configuración. Otra posibilidad es que este sea un código heredado donde a
una vez tuvo varios bits. Cuando a
se convirtió en un solo valor de bit, esta línea aún era técnicamente correcta, por lo que el operador de reducción ahora innecesario se dejó en.