J'ai le code suivant :
unsigned char x = 255;
printf("%x\n", x); // ff
unsigned char tmp = x << 7;
unsigned char y = tmp >> 7;
printf("%x\n", y); // 1
unsigned char z = (x << 7) >> 7;
printf("%x\n", z); // ff
Je m'attendais y
z
soient les mêmes. Mais ils diffèrent selon qu'une variable intermédiaire est utilisée ou non. Il serait intéressant de savoir pourquoi c'est le cas.