J'ai le code C suivant qui fonctionne:
int ex(unsigned int x) {
int mask = 0x55555555;
int a = ((x >> 0) & mask );
return a + ((x >> 1) & mask );
}
Cependant, quand je le développe à ceci, j'obtiens un résultat différent:
int ex(unsigned int x) {
int mask = 0x55555555;
int a = ((x >> 0) & mask );
int b = ((x >> 1) & mask );
return a + b;
}
Quelle est la raison de cette différence?
EDIT: Remarque, je compile ceci pour 32 bits.