Condividi tramite


Conversioni dai tipi integrali con segno

Quando un intero con segno viene convertito in un intero o in un tipo a virgola mobile, il valore viene modificato se rappresentabile nel tipo di risultato.

Quando un intero con segno viene convertito in un numero intero di dimensioni maggiori, il valore viene esteso con segno. 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:

int i = -3;
unsigned short u;

u = i;
printf_s( "%hu\n", u );  // Prints 65533

Quando il compilatore converte un intero con 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.

Nella tabella seguente sono riepilogate le conversioni dai tipi integrali con segno. Si presuppone che il char tipo sia firmato per impostazione predefinita. Se si usa un'opzione in fase di compilazione per modificare l'impostazione predefinita per il char tipo su unsigned, le conversioni fornite nella tabella Conversioni da tipi integrali non firmati per il unsigned char tipo si applicano, anziché le conversioni in questa tabella.

Sezione specifica Microsoft

Nel compilatore int Microsoft e long sono tipi distinti ma equivalenti. La conversione di un int valore procede nello stesso modo della conversione di un oggetto long.

Fine sezione specifica Microsoft

Tabella delle conversioni da tipi integrali firmati

Da Per metodo
char1 short Estensione del segno
char long Estensione del segno
char long long Estensione del segno
char unsigned char Mantenimento del modello; il bit più significativo perde la funzione come bit di segno
char unsigned short Estensione del segno in short; conversione short in unsigned short
char unsigned long Estensione del segno in long; conversione long in unsigned long
char unsigned long long Estensione del segno in long long; conversione long long in unsigned long long
char float Rappresentare esattamente come float
char double Rappresentare esattamente come double
char long double Rappresentare esattamente come long double
short char Mantenimento del byte meno significativo
short long Estensione del segno
short long long Estensione del segno
short unsigned char Mantenimento del byte meno significativo
short unsigned short Mantenimento del modello di bit; il bit più significativo perde la funzione come bit di segno
short unsigned long Estensione del segno in long; conversione long in unsigned long
short unsigned long long Estensione del segno in long long; conversione long long in unsigned long long
short float Rappresentare esattamente come float
short double Rappresentare esattamente come double
short long double Rappresentare esattamente come long double
long char Mantenimento del byte meno significativo
long short Mantenimento della parola meno significativa
long long long Estensione del segno
long unsigned char Mantenimento del byte meno significativo
long unsigned short Mantenimento della parola meno significativa
long unsigned long Mantenimento del modello di bit; il bit più significativo perde la funzione come bit di segno
long unsigned long long Estensione del segno in long long; conversione long long in unsigned long long
long float Rappresenta come float. Se long non è possibile rappresentare esattamente, la precisione viene persa.
long double Rappresentare esattamente come double
long long double Rappresentare esattamente come long double
long long char Mantenimento del byte meno significativo
long long short Mantenimento della parola meno significativa
long long long Mantieni dword con ordine basso
long long unsigned char Mantenimento del byte meno significativo
long long unsigned short Mantenimento della parola meno significativa
long long unsigned long Mantieni dword con ordine basso
long long unsigned long long Mantenimento del modello di bit; il bit più significativo perde la funzione come bit di segno
long long float Rappresenta come float. Se long long non è possibile rappresentare esattamente, la precisione viene persa.
long long double Rappresenta come double. Se long long non può essere rappresentato esattamente come , doubleviene persa una certa precisione.
long long long double Rappresenta come double. Se long long non può essere rappresentato esattamente come , doubleviene persa una certa precisione.

1 Tutte le char voci presuppongono che il char tipo sia firmato per impostazione predefinita.

Vedi anche

Conversioni di assegnazione