Operateurs |= &= ~ en langage C

Résolu/Fermé
cyrard - 12 oct. 2008 à 15:55
 ikoria - 25 févr. 2010 à 09:05
Bonjour,


Voila je fais la retro-ingenierie des sources de openssl CMS et n'etant pas tres experimente en C je ne comprend pas les operateurs suivants:
|=
&=
~
dans le contexte suivant:

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


Dans les tutos de langage C sur le net on ne parle pas de ces operateurs.
Pourraient ils etre definis dans les lignes de commandes du precompilateur dans un fichier .h quelconque de l'application.

Merci
A voir également:

7 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
12 oct. 2008 à 16:09
a |= b; est équivalent à : a = a|b; => le "ou" binaire
Exemple avec a = 10 (00001010 en binaire) et b = 6 (00000110 en binaire)
après a|=b, a contiendra 14 (00001110 en binaire)

a&=b est équivalent à a=a&b; => le "et" binaire
pour reprendre mon exemple : après a&=b; a contiendra 2 (00000010 en binaire)

la vague ~ est, si je me souviens bien, le complémentaire.
29