Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un entero sin signo es realiza la conversión en un entero sin signo o con signo más corto truncando los bits de alto nivel, o un entero sin signo o con signo más largo cero-extendiendose (vea la tabla de Conversiones de tipos enteros de Unsigned ).
Cuando el valor con el tipo entero se reduce en un entero con más pequeño, o un entero sin signo se convierte en su entero correspondiente, el valor no cambia si se puede representar en el nuevo tipo.sin embargo, el valor representa cambios si se establece el bit de signo, como en el ejemplo siguiente.
int j;
unsigned short k = 65533;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Si no se puede representar, el resultado es implementación-definido.Vea Conversiones de la conversión de tipos para obtener información sobre el control de Microsoft C de entrega de intervalo de enteros.El mismo comportamiento es el resultado de la conversión de enteros o de tipo convertir integer.
Los valores sin signo se convierten de manera que se conserve el valor y no son representables directamente en C.La única excepción es una conversión de unsigned long a Hacer flotante, se pierden a lo más los bites de peso inferior.De lo contrario, el valor es retenido, con signo o sin signo.Cuando un valor de tipo entero se convierte a la flotante, y el valor está fuera del intervalo puede representar, el resultado es indefinido.(Vea almacenamiento de tipos básicos para obtener información sobre el intervalo para tipos enteros y de punto flotante).
La tabla siguiente se resumen las conversiones de tipos enteros sin signo.
Conversiones de tipos enteros de Unsigned
From |
Para |
Método |
|---|---|---|
unsigned char |
char |
Configuración de bits de preserve; el bit de alto nivel se convierte en bit de signo |
unsigned char |
short |
Cero-extiendase |
unsigned char |
long |
Cero-extiendase |
unsigned char |
unsigned short |
Cero-extiendase |
unsigned char |
unsigned long |
Cero-extiendase |
unsigned char |
float |
Convierte en Más; convierte Más a Hacer flotante |
unsigned char |
double |
Convierte en Más; convierte Más a Doble |
unsigned char |
long double |
Convierte en Más; convierte Más a Doble |
unsigned short |
char |
Byte de orden inferior de preserve |
unsigned short |
short |
Configuración de bits de preserve; el bit de alto nivel se convierte en bit de signo |
unsigned short |
long |
Cero-extiendase |
unsigned short |
unsigned char |
Byte de orden inferior de preserve |
unsigned short |
unsigned long |
Cero-extiendase |
unsigned short |
float |
Convierte en Más; convierte Más a Hacer flotante |
unsigned short |
double |
Convierte en Más; convierte Más a Doble |
unsigned short |
long double |
Convierte en Más; convierte Más a Doble |
unsigned long |
char |
Byte de orden inferior de preserve |
unsigned long |
short |
Palabra de orden inferior de preserve |
unsigned long |
long |
Configuración de bits de preserve; el bit de alto nivel se convierte en bit de signo |
unsigned long |
unsigned char |
Byte de orden inferior de preserve |
unsigned long |
unsigned short |
Palabra de orden inferior de preserve |
unsigned long |
float |
Convierte en Más; convierte Más a Hacer flotante |
unsigned long |
double |
Convertir directamente a Doble |
unsigned long |
long double |
Convierte en Más; convierte Más a Doble |
Específicos de Microsoft
Para Microsoft C de 32 bits, el tipo de unsigned int es equivalente al tipo de unsigned long .la conversión de un valor de unsigned int continúa igual que la conversión de unsigned long.Las conversiones de los valores de unsigned long a Hacer flotante no son precisas si el valor que se está convirtiendo es mayor que el valor signed positivo máximo de Más .
Específico de Microsoft de FINAL