Conversions depuis des types intégraux signés
Quand un entier signé est converti en un type entier ou à virgule flottante, la valeur d’origine reste inchangée si elle peut être représentée dans le type de résultat.
Quand un entier signé est converti en entier de plus grande taille, la valeur est de type signe étendu. Quand ils sont convertis en entier de taille inférieure, les bits d’ordre haut sont tronqués. Le résultat est interprété à l’aide du type de résultat, comme illustré dans cet exemple :
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Lorsque le compilateur convertit un entier signé en type à virgule flottante, si la valeur d’origine ne peut pas être représentée exactement dans le type de résultat, le résultat est la valeur plus élevée ou plus faible pouvant être représentée suivante.
Pour plus d’informations sur les tailles des types intégraux et à virgule flottante, consultez Stockage de types de base.
Le tableau suivant répertorie les conversions de types intégraux signés. Il part du principe 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
en non signé, les conversions données dans la table Conversions de types intégraux non signés pour le type unsigned char
s’appliquent, au lieu des conversions de cette table.
Section spécifique à Microsoft
Dans le compilateur Microsoft, int
et long
sont des types distincts mais équivalents. La conversion d'une valeur int
s'effectue de la même façon que la conversion de long
.
FIN de la section spécifique à Microsoft
Table de conversions à partir de types intégraux signés
Du | À | Méthode |
---|---|---|
char 1 |
short |
Étendre le signe |
char |
long |
Étendre le signe |
char |
long 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 |
Signe étendu à short ; convertir short en unsigned short |
char |
unsigned long |
Signe étendu à long ; convertir long en unsigned long |
char |
unsigned long long |
Signe étendu à long long ; convertir long long en unsigned long long |
char |
float |
Représenter exactement comme float |
char |
double |
Représenter exactement comme double |
char |
long double |
Représenter exactement comme long double |
short |
char |
Conserver l'octet de poids faible |
short |
long |
Étendre le signe |
short |
long 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 |
Signe étendu à long ; convertir long en unsigned long |
short |
unsigned long long |
Signe étendu à long long ; convertir long long en unsigned long long |
short |
float |
Représenter exactement comme float |
short |
double |
Représenter exactement comme double |
short |
long double |
Représenter exactement comme long double |
long |
char |
Conserver l'octet de poids faible |
long |
short |
Conserver le mot de poids faible |
long |
long long |
Étendre le signe |
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 |
unsigned long long |
Signe étendu à long long ; convertir long long en unsigned long long |
long |
float |
Représenter comme float . Si long ne peut pas être représenté exactement, il y a une perte de précision. |
long |
double |
Représenter exactement comme double |
long |
long double |
Représenter exactement comme long double |
long long |
char |
Conserver l'octet de poids faible |
long long |
short |
Conserver le mot de poids faible |
long long |
long |
Conserver un mot dword d’ordre bas |
long long |
unsigned char |
Conserver l'octet de poids faible |
long long |
unsigned short |
Conserver le mot de poids faible |
long long |
unsigned long |
Conserver un mot dword d’ordre bas |
long long |
unsigned long long |
Conserver le modèle binaire. Le bit de poids fort perd sa fonction de bit de signe |
long long |
float |
Représenter comme float . Si long long ne peut pas être représenté exactement, il y a une perte de précision. |
long long |
double |
Représenter comme double . Si long long ne peut pas être représenté exactement comme un double , il y a une perte de précision. |
long long |
long double |
Représenter comme double . Si long long ne peut pas être représenté exactement comme un double , il y a une perte de précision. |
1 Toutes les entrées char
supposent que le type char
est signé par défaut.