Conversions à partir des types entier signé
Lorsqu'un entier signé est converti en entier non signé de taille égale ou supérieure et que la valeur de l'entier signé n'est pas négative, la valeur reste inchangée. La conversion s'effectue en étendant le signe de l'entier signé. Un entier signé est converti en entier signé plus court en tronquant les bits de poids fort. Le résultat est interprété comme une valeur non signée, comme illustré dans cet exemple.
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Aucune information n'est perdue lorsqu'un entier signé est converti en valeur flottante, à l'exception de précisions qui peuvent être perdues lorsqu'une valeur long int ou unsigned long int est convertie en valeur float.
Le tableau suivant répertorie les conversions de types intégraux signés. Ce tableau suppose que le type char est signé par défaut. Si vous utilisez une option au moment de la compilation pour modifier la valeur par défaut du type char par non signé, les conversions données dans le tableau Conversions de types intégraux non signés pour le type unsigned char s'appliquent, au lieu des conversions du tableau suivant, Conversions de types intégraux signés.
Conversions depuis les types intégraux signés
De |
En |
Méthode |
---|---|---|
char1 |
short |
Étendre le signe |
char |
long |
Étendre le signe |
char |
unsigned char |
Conserver le modèle. Le bit de poids fort perd sa fonction de bit de signe |
char |
unsigned short |
Étendre le signe à short. Convertir short en unsigned short |
char |
unsigned long |
Étendre le signe à long. Convertir long en unsigned long |
char |
float |
Étendre le signe à long. Convertir long en float |
char |
double |
Étendre le signe à long. Convertir long en double |
char |
long double |
Étendre le signe à long. Convertir long en double |
short |
char |
Conserver l'octet de poids faible |
short |
long |
Étendre le signe |
short |
unsigned char |
Conserver l'octet de poids faible |
short |
unsigned short |
Conserver le modèle binaire. Le bit de poids fort perd sa fonction de bit de signe |
short |
unsigned long |
Étendre le signe à long. Convertir long en unsigned long |
short |
float |
Étendre le signe à long. Convertir long en float |
short |
double |
Étendre le signe à long. Convertir long en double |
short |
long double |
Étendre le signe à long. Convertir long en double |
long |
char |
Conserver l'octet de poids faible |
long |
short |
Conserver le mot de poids faible |
long |
unsigned char |
Conserver l'octet de poids faible |
long |
unsigned short |
Conserver le mot de poids faible |
long |
unsigned long |
Conserver le modèle binaire. Le bit de poids fort perd sa fonction de bit de signe |
long |
float |
Représenter comme float. Si long ne peut pas être représenté exactement, certaines précisions sont perdues. |
long |
double |
Représenter comme double. Si long ne peut pas être représenté exactement comme double, certaines précisions sont perdues. |
long |
long double |
Représenter comme double. Si long ne peut pas être représenté exactement comme double, certaines précisions sont perdues. |
1. Toutes les entrées char supposent que le type char est signé par défaut.
Section spécifique à Microsoft
Pour le compilateur Microsoft 32 bits C, un entier est équivalent à un long. La procédure de conversion d'une valeur int est identique à celle de long.
FIN de la section spécifique à Microsoft