L'impression short int à l'aide de diverses spécificateurs de format

Veuillez jeter un oeil à ce code:

#include <stdio.h>
int main(void)
{
short s = -1;

printf("sizeof(short) = %lu\n", sizeof(short));
printf("sizeof(int) = %lu\n", sizeof(int));
printf("sizeof(long) = %lu\n", sizeof(long));
printf("s = %hd\n", s);
printf("s = %d\n", s);
printf("s = %ld\n", s);

return 0;
}  

Il a donné de sortie :

sizeof(short) = 2  
sizeof(int) = 4  
sizeof(long) = 8  
s = -1  
s = -1  
s = 4294967295  

Dans la dernière ligne pourquoi s = 4294967295 au lieu de s = -1 que par cette question je suis venu pour savoir que C lorsque la variable est promu, sa valeur reste constante.

OriginalL'auteur rootkea | 2013-02-07