Partager via


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
char1 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.

Voir aussi

Conversions d’affectation