Conversioni dai tipi integrali con segnoConversions from Signed Integral Types

Quando un intero con segno viene convertito in un intero senza segno di dimensione uguale o maggiore e il valore dell'intero con segno non è negativo, tale valore rimane invariato.When a signed integer is converted to an unsigned integer with equal or greater size and the value of the signed integer is not negative, the value is unchanged. La conversione viene eseguita mediante l'estensione del segno dell'intero con segno.The conversion is made by sign-extending the signed integer. Un intero con segno viene convertito in un intero con segno più corto troncando i bit più significativi.A signed integer is converted to a shorter signed integer by truncating the high-order bits. Il risultato viene interpretato come un valore senza segno, come illustrato in questo esempio.The result is interpreted as an unsigned value, as shown in this example.

int i = -3;  
unsigned short u;  

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

Quando un intero con segno viene convertito in un valore a virgola mobile non viene persa alcuna informazione, tuttavia parte della precisione può andare persa quando un valore long int or long int senza segno viene convertito in un valore float.No information is lost when a signed integer is converted to a floating value, except that some precision may be lost when a long int or unsigned long int value is converted to a float value.

Nella tabella seguente sono riepilogate le conversioni dai tipi integrali con segno.The following table summarizes conversions from signed integral types. In questa tabella si presuppone che il tipo char sia un tipo con segno per impostazione predefinita.This table assumes that the char type is signed by default. Se si usa un'opzione in fase di compilazione per modificare l'impostazione predefinita del tipo char in un tipo senza segno, le conversioni indicate nella tabella Conversioni dai tipi integrali senza segno per il tipo char senza segno si applicano al posto delle conversioni nella tabella riportata di seguito, Conversioni dai tipi integrali con segno.If you use a compile-time option to change the default for the char type to unsigned, the conversions given in the Conversions from Unsigned Integral Types table for the unsigned char type apply instead of the conversions in the following table, Conversions from Signed Integral Types.

Conversioni dai tipi integrali con segnoConversions from Signed Integral Types

DaFrom PerTo MetodoMethod
char1char1 shortshort Estensione del segnoSign-extend
charchar longlong Estensione del segnoSign-extend
charchar char senza segnounsigned char Mantenimento del modello; il bit più significativo perde la funzione come bit di segnoPreserve pattern; high-order bit loses function as sign bit
charchar short senza segnounsigned short Estensione del segno a short; conversione di short in short senza segnoSign-extend to short; convert short to unsigned short
charchar long senza segnounsigned long Estensione del segno a long; conversione di long in long senza segnoSign-extend to long; convert long to unsigned long
charchar floatfloat Estensione del segno a long; conversione di long in floatSign-extend to long; convert long to float
charchar doubledouble Estensione del segno a long; conversione di long in doubleSign-extend to long; convert long to double
charchar long doublelong double Estensione del segno a long; conversione di long in doubleSign-extend to long; convert long to double
shortshort charchar Mantenimento del byte meno significativoPreserve low-order byte
shortshort longlong Estensione del segnoSign-extend
shortshort char senza segnounsigned char Mantenimento del byte meno significativoPreserve low-order byte
shortshort short senza segnounsigned short Mantenimento del modello di bit; il bit più significativo perde la funzione come bit di segnoPreserve bit pattern; high-order bit loses function as sign bit
shortshort long senza segnounsigned long Estensione del segno a long; conversione di long in long senza segnoSign-extend to long; convert long to unsigned long
shortshort floatfloat Estensione del segno a long; conversione di long in floatSign-extend to long; convert long to float
shortshort doubledouble Estensione del segno a long; conversione di long in doubleSign-extend to long; convert long to double
shortshort long doublelong double Estensione del segno a long; conversione di long in doubleSign-extend to long; convert long to double
longlong charchar Mantenimento del byte meno significativoPreserve low-order byte
longlong shortshort Mantenimento della parola meno significativaPreserve low-order word
longlong char senza segnounsigned char Mantenimento del byte meno significativoPreserve low-order byte
longlong short senza segnounsigned short Mantenimento della parola meno significativaPreserve low-order word
longlong long senza segnounsigned long Mantenimento del modello di bit; il bit più significativo perde la funzione come bit di segnoPreserve bit pattern; high-order bit loses function as sign bit
longlong floatfloat Rappresentazione come float.Represent as float. Se long non può essere rappresentato con esattezza, la precisione diminuisce.If long cannot be represented exactly, some precision is lost.
longlong doubledouble Rappresentazione come double.Represent as double. Se long non può essere rappresentato con esattezza come double, la precisione diminuisce.If long cannot be represented exactly as a double, some precision is lost.
longlong long doublelong double Rappresentazione come double.Represent as double. Se long non può essere rappresentato con esattezza come double, la precisione diminuisce.If long cannot be represented exactly as a double, some precision is lost.
  1. Tutte le voci char presuppongono che il tipo char sia un tipo con segno per impostazione predefinita.All char entries assume that the char type is signed by default.

    Sezione specifica MicrosoftMicrosoft Specific

    Per il compilatore C a 32 bit Microsoft , un intero è equivalente a un valore long.For the Microsoft 32-bit C compiler, an integer is equivalent to a long. La conversione di un valore int viene eseguita in modo analogo a quella di un valore long.Conversion of an int value proceeds the same as for a long.

    Fine sezione specifica MicrosoftEND Microsoft Specific

Vedere ancheSee Also

Conversioni di assegnazioneAssignment Conversions