Operadores |= &= ~ en lenguaje C
Resuelto
cyrard
-
ikoria -
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
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
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.
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.