Partager via


Conversions de types intégraux non signés

Entier non signé est converti en un non signé ou en entier signé plus court en tronquant les bits de poids fort, ou à un plus long non signé ou entier signé zéro-en d'extension (consultez le tableau de conversions des types intégraux non signés ).

Lorsque la valeur avec le type intégral est déplacée à un entier signé avec la plus petite taille, ou un entier non signé est converti en son entier signé correspondant, la valeur est inchangée si elle peut être représentée dans le nouveau type.Toutefois, la valeur il représente les modifications si le bit de signe est défini, comme dans l'exemple suivant.

int j;
unsigned short k = 65533;

j = k;
printf_s( "%hd\n", j );   // Prints -3

si elle ne peut pas être représentée, le résultat implémentation-est défini.Consultez conversions de cast de type pour plus d'informations sur la gestion du compilateur C Microsoft de la rétrogadation des entiers.Le même comportement provient de la conversion entière ou du type cast l'entier.

Des valeurs non signées sont converties de manière à conserver leur valeur et ne sont pas représentables directement en C.La seule exception est une conversion d' unsigned long à float, qui perd au plus les bits de poids faible.Sinon, la valeur est conservée, signé ou non signé.Lorsqu'une valeur de type intégral est convertie en flottante, la valeur est en dehors de la plage qui peut être représenté, le résultat n'est pas défini.(Consultez stockage des types de base pour plus d'informations sur la plage pour les types intégraux et à virgule flottante.)

Le tableau suivant répertorie les conversions des types intégraux non signés.

conversions des types intégraux non signés

From

Pour

Méthode

unsigned char

char

Modèle binaire de conserver ; le bit de poids fort est bit de signe

unsigned char

short

Zéro-étendez

unsigned char

long

Zéro-étendez

unsigned char

unsigned short

Zéro-étendez

unsigned char

unsigned long

Zéro-étendez

unsigned char

float

Converti en long; converti long à float

unsigned char

double

Converti en long; converti long à double

unsigned char

long double

Converti en long; converti long à double

unsigned short

char

Octet de poids faible de conserver

unsigned short

short

Modèle binaire de conserver ; le bit de poids fort est bit de signe

unsigned short

long

Zéro-étendez

unsigned short

unsigned char

conservez l'octet de poids faible

unsigned short

unsigned long

Zéro-étendez

unsigned short

float

Converti en long; converti long à float

unsigned short

double

Converti en long; converti long à double

unsigned short

long double

Converti en long; converti long à double

unsigned long

char

Octet de poids faible de conserver

unsigned long

short

Conservez le mot de poids faible

unsigned long

long

Modèle binaire de conserver ; le bit de poids fort est bit de signe

unsigned long

unsigned char

Octet de poids faible de conserver

unsigned long

unsigned short

Conservez le mot de poids faible

unsigned long

float

Converti en long; converti long à float

unsigned long

double

converti directement à double

unsigned long

long double

Converti en long; converti long à double

Spécifique à Microsoft

pour le compilateur C 32 bits de Microsoft, le type d' unsigned int est équivalent au type d' unsigned long .La conversion d'une valeur d' unsigned int continue de la même façon que la conversion d' unsigned long.Les conversions des valeurs d' unsigned long à float ne sont pas précises si la valeur est convertie est supérieure à la valeur positive signée maximale de long .

détail de FIN Microsoft

Voir aussi

Concepts

Conversions d'assignation