Conversions depuis les types intégraux non signés
Quand un entier non signé est converti en un type entier ou à virgule flottante, si la valeur d’origine peut être représentée dans le type de résultat, la valeur est inchangée.
Lorsque le compilateur convertit un entier non signé en entier de plus grande taille, la valeur est étendue par zéro. Lorsqu’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 :
unsigned k = 65533;
short j;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Lorsque le compilateur convertit un entier non 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.
Section spécifique à Microsoft
Dans le compilateur Microsoft, unsigned
(ou unsigned int
) et unsigned long
sont des types distincts mais équivalents. La conversion d'une valeur unsigned int
s'effectue de la même façon que la conversion de unsigned long
.
FIN de la section spécifique à Microsoft
Le tableau suivant répertorie les conversions de types intégraux non signés.
Table des conversions à partir de types intégraux non signés
Du | À | Méthode |
---|---|---|
unsigned char |
char |
Conserver le modèle binaire. Le bit de poids fort devient un bit de signe |
unsigned char |
short |
Extension zéro |
unsigned char |
long |
Extension zéro |
unsigned char |
long long |
Extension zéro |
unsigned char |
unsigned short |
Extension zéro |
unsigned char |
unsigned long |
Extension zéro |
unsigned char |
unsigned long long |
Extension zéro |
unsigned char |
float |
Convertir exactement en float |
unsigned char |
double |
Convertir exactement en double |
unsigned char |
long double |
Convertir exactement en long double |
unsigned short |
char |
Conserver l'octet de poids faible |
unsigned short |
short |
Conserver le modèle binaire. Le bit de poids fort devient un bit de signe |
unsigned short |
long |
Extension zéro |
unsigned short |
long long |
Extension zéro |
unsigned short |
unsigned char |
Conserver l'octet de poids faible |
unsigned short |
unsigned long |
Extension zéro |
unsigned short |
unsigned long long |
Extension zéro |
unsigned short |
float |
Convertir exactement en float |
unsigned short |
double |
Convertir exactement en double |
unsigned short |
long double |
Convertir exactement en long double |
unsigned long |
char |
Conserver l'octet de poids faible |
unsigned long |
short |
Conserver le mot de poids faible |
unsigned long |
long |
Conserver le modèle binaire. Le bit de poids fort devient un bit de signe |
unsigned long |
long long |
Extension zéro |
unsigned long |
unsigned char |
Conserver l'octet de poids faible |
unsigned long |
unsigned short |
Conserver le mot de poids faible |
unsigned long |
unsigned long long |
Extension zéro |
unsigned long |
float |
Convertir dans la valeur plus proche pouvant être représentée float |
unsigned long |
double |
Convertir exactement en double |
unsigned long |
long double |
Convertir exactement en long double |
unsigned long long |
char |
Conserver l'octet de poids faible |
unsigned long long |
short |
Conserver le mot de poids faible |
unsigned long long |
long |
Conserver un mot dword d’ordre bas |
unsigned long long |
long long |
Conserver le modèle binaire. Le bit de poids fort devient un bit de signe |
unsigned long long |
unsigned char |
Conserver l'octet de poids faible |
unsigned long long |
unsigned short |
Conserver le mot de poids faible |
unsigned long long |
unsigned long |
Conserver un mot dword d’ordre bas |
unsigned long long |
float |
Convertir dans la valeur plus proche pouvant être représentée float |
unsigned long long |
double |
Convertir dans la valeur plus proche pouvant être représentée double |
unsigned long long |
long double |
Convertir dans la valeur plus proche pouvant être représentée long double |