Conversiones de tipos enteros con signo
Cuando un entero se convierte en un entero sin signo con igual o el mayor tamaño y el valor de entero con signo no es negativo, el valor no cambia.La conversión se realiza signo-extendiendose el entero con signo.Un entero se convierte en un entero menor truncando los bits de alto nivel.El resultado se interpreta como un valor sin signo, como se muestra en este ejemplo.
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Se pierda información cuando un entero se convierte en un valor flotante, salvo que alguna precisión puede ser perderá cuando un valor de int largo o de int unsigned long se convierte en un valor de Hacer flotante .
La tabla siguiente se resumen las conversiones de tipos enteros con signo.Esta tabla se supone que está firmado el tipo de char de forma predeterminada.Si usa una opción de tiempo de compilación de cambiar el valor predeterminado para char tipo a sin firmar, las conversiones incluidas en la tabla de Conversiones de tipos enteros de Unsigned para el tipo de unsigned char aplican en lugar de las conversiones en la tabla siguiente, conversiones de tipos enteros con signo.
Conversiones de tipos enteros con signo
From |
Para |
Método |
---|---|---|
char1 |
short |
Signo-extiendase |
char |
long |
Signo-extiendase |
char |
unsigned char |
Modelo de preserve; el bit de alto nivel pierde la función como bit de signo |
char |
unsigned short |
Signo-extiendase a Corto; convierte Corto a unsigned short |
char |
unsigned long |
Signo-extiendase a Más; convierte Más a unsigned long |
char |
float |
Signo-extiendase a Más; convierte Más a Hacer flotante |
char |
double |
Signo-extiendase a Más; convierte Más a Doble |
char |
long double |
Signo-extiendase a Más; convierte Más a Doble |
short |
char |
Byte de orden inferior de preserve |
short |
long |
Signo-extiendase |
short |
unsigned char |
Byte de orden inferior de preserve |
short |
unsigned short |
Configuración de bits de preserve; el bit de alto nivel pierde la función como bit de signo |
short |
unsigned long |
Signo-extiendase a Más; convierte Más a unsigned long |
short |
float |
Signo-extiendase a Más; convierte Más a Hacer flotante |
short |
double |
Signo-extiendase a Más; convierte Más a Doble |
short |
long double |
Signo-extiendase a Más; convierte Más a Doble |
long |
char |
Byte de orden inferior de preserve |
long |
short |
Palabra de orden inferior de preserve |
long |
unsigned char |
Byte de orden inferior de preserve |
long |
unsigned short |
Palabra de orden inferior de preserve |
long |
unsigned long |
Configuración de bits de preserve; el bit de alto nivel pierde la función como bit de signo |
long |
float |
Representa como Hacer flotante.Si Más no se puede representar correcta, se pierde alguna precisión. |
long |
double |
Representa como Doble.Si Más no se puede representar exactamente como Doble, se pierde alguna precisión. |
long |
long double |
Representa como Doble.Si Más no se puede representar exactamente como Doble, se pierde alguna precisión. |
1.Todas las entradas de char suponen que está firmado el tipo de char de forma predeterminada.
Específicos de Microsoft
Para Microsoft C de 32 bits, un entero es equivalente a Más.La conversión de un valor de int continúa igual que para Más.
Específico de Microsoft de FINAL