Condividi tramite


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 rimane invariato.

Quando il compilatore converte un intero senza segno in un numero intero di dimensioni maggiori, il valore è esteso zero. Quando viene convertito in un numero 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.

Sezione specifica Microsoft

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.

Fine sezione specifica Microsoft

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

Tabella delle conversioni da tipi integrali senza segno

Da Per 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 Converti esattamente in float
unsigned char double Converti esattamente in double
unsigned char long double Converti 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 Converti esattamente in float
unsigned short double Converti esattamente in double
unsigned short long double Converti 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 Converti esattamente in double
unsigned long long double Converti 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 Mantieni dword con ordine basso
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 Mantieni dword con ordine basso
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