j'ai remarqué un comportement étrange avec des crochetsBitshifts annulant au lieu de comportement attendu
opérateurs de bits#include <stdio.h>
int main(void)
{
unsigned char c;
unsigned char d;
c = 153;
c = (c << 7) >> 7;
printf("%d\n", c);
d = 153;
d = (d << 7);
d = (d >> 7);
printf("%d\n", d);
}
sortie:
153
1
Je me attendais c
aussi avoir une valeur de 1 ... ce qui se passe sur? Est-ce que ce n'est pas défini?
Jetez un oeil sur le code généré et ce qu'il fait. –
Semblable à [this] (https://stackoverflow.com/questions/33068985/sizeof-an-integer-expression-in-c) question. L'expression est évaluée en tant qu'entier puis stockée en tant que caractère. Versus étant un char à des étapes intermédiaires. – matt
ok qui a du sens, lemmi juste travailler avec typecasting –