Compartir a través de


Conversiones de tipos enteros sin signo

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.

Vea también

Conversiones de asignación