Operadores |= &= ~ en lenguaje C

Resuelto
cyrard -  
 ikoria -
Hola,

Aquí estoy haciendo la ingeniería inversa de las fuentes de OpenSSL CMS y, al no ser muy experimentado en C, no entiendo los siguientes operadores:
|=
&=
~
en el siguiente contexto:

int flags=CMS_DETACHED;
[...]
flags &= ~CMS_DETACHED;
[...]
flags |= CMS_BINARY;


En los tutoriales de lenguaje C en la red no se habla de estos operadores.
¿Podrían estar definidos en las líneas de comandos del precompilador en algún archivo .h de la aplicación?

Gracias
Configuration: Linux Kubuntu 7.04 gutsy Kdevelop

7 respuestas

Usuario anónimo
 
a |= b; es equivalente a: a = a|b; => el "o" binario
Ejemplo con a = 10 (00001010 en binario) y b = 6 (00000110 en binario)
después de a|=b, a contendrá 14 (00001110 en binario)

a&=b es equivalente a a=a&b; => el "y" binario
para retomar mi ejemplo: después de a&=b; a contendrá 2 (00000010 en binario)

la tilde ~ es, si no recuerdo mal, el complemento.
29