Conversioni dai tipi integrali senza segno

Quando un intero senza segno viene convertito in un tipo integer o a virgola mobile, se il valore originale è rappresentabile nel tipo di risultato il valore non viene modificato.

Quando il compilatore converte un intero senza segno in un intero di dimensioni maggiori, il valore è esteso zero. Quando viene convertito in un intero di dimensioni inferiori, i bit di ordine elevato vengono troncati. Il risultato viene interpretato usando il tipo di risultato, come illustrato in questo esempio:

unsigned k = 65533;
short j;

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

Quando il compilatore converte un intero senza segno in un tipo a virgola mobile, se il valore originale non è rappresentabile esattamente nel tipo di risultato, il risultato è il valore rappresentabile superiore o inferiore successivo.

Per informazioni sulle dimensioni dei tipi integrali e a virgola mobile, vedere Archiviazione di tipi di base .

Microsoft Specifico

Nel compilatore Microsoft ( unsigned o unsigned int) e unsigned long sono tipi distinti ma equivalenti. La conversione di un valore unsigned int viene eseguita nello stesso modo di una conversione di un unsigned long.

END Microsoft Specifico

Nella tabella seguente sono riepilogate le conversioni dai tipi integrali senza segno.

Tabella delle conversioni da tipi integrali senza segno

Da A Metodo
unsigned char char Viene mantenuto lo schema di bit; il bit più significativo diventa il bit di segno
unsigned char short Estensione zero
unsigned char long Estensione zero
unsigned char long long Estensione zero
unsigned char unsigned short Estensione zero
unsigned char unsigned long Estensione zero
unsigned char unsigned long long Estensione zero
unsigned char float Convertire esattamente in float
unsigned char double Convertire esattamente in double
unsigned char long double Convertire esattamente in long double
unsigned short char Mantenimento del byte meno significativo
unsigned short short Viene mantenuto lo schema di bit; il bit più significativo diventa il bit di segno
unsigned short long Estensione zero
unsigned short long long Estensione zero
unsigned short unsigned char Mantenimento del byte meno significativo
unsigned short unsigned long Estensione zero
unsigned short unsigned long long Estensione zero
unsigned short float Convertire esattamente in float
unsigned short double Convertire esattamente in double
unsigned short long double Convertire esattamente in long double
unsigned long char Mantenimento del byte meno significativo
unsigned long short Mantenimento della parola meno significativa
unsigned long long Viene mantenuto lo schema di bit; il bit più significativo diventa il bit di segno
unsigned long long long Estensione zero
unsigned long unsigned char Mantenimento del byte meno significativo
unsigned long unsigned short Mantenimento della parola meno significativa
unsigned long unsigned long long Estensione zero
unsigned long float Convertire in rappresentabile più vicino float
unsigned long double Convertire esattamente in double
unsigned long long double Convertire esattamente in long double
unsigned long long char Mantenimento del byte meno significativo
unsigned long long short Mantenimento della parola meno significativa
unsigned long long long Mantenere dword a basso ordine
unsigned long long long long Viene mantenuto lo schema di bit; il bit più significativo diventa il bit di segno
unsigned long long unsigned char Mantenimento del byte meno significativo
unsigned long long unsigned short Mantenimento della parola meno significativa
unsigned long long unsigned long Mantenere dword a basso ordine
unsigned long long float Convertire in rappresentabile più vicino float
unsigned long long double Convertire in rappresentabile più vicino double
unsigned long long long double Convertire in rappresentabile più vicino long double

Vedi anche

Conversioni di assegnazione