Fermer2
ThibautLe 05/11/2007 à 09:52
J'ai tapé le code suivant et observé l'assembleur généré.
void _main(void)
{
    int i;
    char c;
    
    
    i= 0;
    c= -1;
    
    (char)i= c;

    printf(" * %i * ", i);
}
D'abord, je suis surpris que le compilateur accepte. Comment interprète-t-il "(char)i= c" ? Je n'en comprends pas le sens.
D'ailleurs, concrètement, ça ne change rien avec ou sans le cast : le code ASM propage le bit de poids faible de c pour étendre sa valeur sur 16 bits, et il place le résultat dans i.