Conversions de types intégraux signés
Lorsqu'un entier signé est converti en entier non signé avec égal ou une taille supérieure et la valeur de l'entier signé n'est pas négative, la valeur est inchangée.La conversion est effectuée signe-en étendant l'entier signé.Entier signé est converti en entier signé plus court en tronquant les bits de poids fort.Le résultat est soit 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 une valeur flottante, sauf que de la précision peut être perdues lorsque la valeur de long int ou de long entier non signé est convertie en une valeur float.
Le tableau suivant répertorie les conversions des types intégraux signés.ce tableau suppose que le type d' char est signé par défaut.Si vous utilisez une option de compilation de modifier la valeur par défaut pour le type d' char à non signé, les conversions données dans la table de conversions des types intégraux non signés pour le type d' unsigned char s'appliquent au lieu des conversions dans le tableau suivant, conversions des types intégraux signés.
conversions des types intégraux signés
From |
Pour |
Méthode |
---|---|---|
char1 |
short |
Signe-étendez |
char |
long |
Signe-étendez |
char |
unsigned char |
Modèle de conserver ; le bit de poids fort perd la fonction comme bit de signe |
char |
unsigned short |
Signe-étendez à short; convertissez short à unsigned short |
char |
unsigned long |
Signe-étendez à long; convertissez long à unsigned long |
char |
float |
Signe-étendez à long; convertissez long à float |
char |
double |
Signe-étendez à long; convertissez long à double |
char |
long double |
Signe-étendez à long; convertissez long à double |
short |
char |
Octet de poids faible de conserver |
short |
long |
Signe-étendez |
short |
unsigned char |
Octet de poids faible de conserver |
short |
unsigned short |
Modèle binaire de conserver ; le bit de poids fort perd la fonction comme bit de signe |
short |
unsigned long |
Signe-étendez à long; convertissez long à unsigned long |
short |
float |
Signe-étendez à long; convertissez long à float |
short |
double |
Signe-étendez à long; convertissez long à double |
short |
long double |
Signe-étendez à long; convertissez long à double |
long |
char |
Octet de poids faible de conserver |
long |
short |
Conservez le mot de poids faible |
long |
unsigned char |
Octet de poids faible de conserver |
long |
unsigned short |
Conservez le mot de poids faible |
long |
unsigned long |
Modèle binaire de conserver ; le bit de poids fort perd la fonction comme bit de signe |
long |
float |
Représentation sous forme float.Si long ne peut pas être représenté exactement, de précision est perdue. |
long |
double |
Représentation sous forme double.Si long ne peut pas être représenté exactement comme double, de précision est perdue. |
long |
long double |
Représentation sous forme double.Si long ne peut pas être représenté exactement comme double, de précision est perdue. |
1.toutes les entrées d' char supposent que le type d' char est signé par défaut.
Spécifique à Microsoft
pour le compilateur C 32 bits de Microsoft, un entier est équivalent à long.La conversion d'une valeur d' int continue avec les mêmes que pour long.
détail de FIN Microsoft