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.
Cuando un entero sin signo se convierte a un entero o a un tipo de punto flotante, si el valor original se puede representar en el tipo del resultado, el valor no cambia.
Cuando el compilador convierte un entero sin signo a un entero de mayor tamaño, el valor se completa con ceros. Cuando se convierte a un entero de menor tamaño, los bits de orden superior se truncan. El resultado se interpreta con el tipo del resultado, como se muestra en este ejemplo:
unsigned k = 65533;
short j;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Cuando el compilador convierte un entero con signo a un tipo de punto flotante, si el valor original no se puede representar exactamente en el tipo del resultado, el resultado será el siguiente valor más alto o más bajo que se puede representar.
Consulte Almacenamiento de tipos básicos para obtener información sobre los tamaños de tipos enteros y de punto flotante.
Específicos de Microsoft
En el compilador de Microsoft, unsigned (o unsigned int ) y unsigned long son tipos distintos, pero equivalentes. La conversión de un valor unsigned int se realiza de la misma forma que la conversión de un unsigned long.
FIN de Específicos de Microsoft
En la tabla siguiente se resumen las conversiones de tipos enteros sin signo.
Tabla de conversiones de tipos enteros sin signo
| De | En | Método |
|---|---|---|
unsigned char |
char |
Se conserva el patrón de bits; el bit de orden superior se convierte en el bit de signo |
unsigned char |
short |
Extensión de cero |
unsigned char |
long |
Extensión de cero |
unsigned char |
long long |
Extensión de cero |
unsigned char |
unsigned short |
Extensión de cero |
unsigned char |
unsigned long |
Extensión de cero |
unsigned char |
unsigned long long |
Extensión de cero |
unsigned char |
float |
Se convierte exactamente en float. |
unsigned char |
double |
Se convierte exactamente en double. |
unsigned char |
long double |
Se convierte exactamente en long double. |
unsigned short |
char |
Se mantiene el byte de orden inferior |
unsigned short |
short |
Se conserva el patrón de bits; el bit de orden superior se convierte en el bit de signo |
unsigned short |
long |
Extensión de cero |
unsigned short |
long long |
Extensión de cero |
unsigned short |
unsigned char |
Se mantiene el byte de orden inferior |
unsigned short |
unsigned long |
Extensión de cero |
unsigned short |
unsigned long long |
Extensión de cero |
unsigned short |
float |
Se convierte exactamente en float. |
unsigned short |
double |
Se convierte exactamente en double. |
unsigned short |
long double |
Se convierte exactamente en long double. |
unsigned long |
char |
Se mantiene el byte de orden inferior |
unsigned long |
short |
Se mantiene la palabra de orden inferior |
unsigned long |
long |
Se conserva el patrón de bits; el bit de orden superior se convierte en el bit de signo |
unsigned long |
long long |
Extensión de cero |
unsigned long |
unsigned char |
Se mantiene el byte de orden inferior |
unsigned long |
unsigned short |
Se mantiene la palabra de orden inferior |
unsigned long |
unsigned long long |
Extensión de cero |
unsigned long |
float |
Se convierte en el representable más cercano float. |
unsigned long |
double |
Se convierte exactamente en double. |
unsigned long |
long double |
Se convierte exactamente en long double. |
unsigned long long |
char |
Se mantiene el byte de orden inferior |
unsigned long long |
short |
Se mantiene la palabra de orden inferior |
unsigned long long |
long |
Se mantiene el valor dword de orden inferior |
unsigned long long |
long long |
Se conserva el patrón de bits; el bit de orden superior se convierte en el bit de signo |
unsigned long long |
unsigned char |
Se mantiene el byte de orden inferior |
unsigned long long |
unsigned short |
Se mantiene la palabra de orden inferior |
unsigned long long |
unsigned long |
Se mantiene el valor dword de orden inferior |
unsigned long long |
float |
Se convierte en el representable más cercano float. |
unsigned long long |
double |
Se convierte en el representable más cercano double. |
unsigned long long |
long double |
Se convierte en el representable más cercano long double. |