¿Qué es un unsigned char?
En C/C++, ¿para qué se utiliza un unsigned char
? ¿En qué se diferencia de un char
normal?
452
3
En C/C++, ¿para qué se utiliza un unsigned char
? ¿En qué se diferencia de un char
normal?
Esto depende de la implementación, ya que el estándar C NO define la significación de
char
. Dependiendo de la plataforma, char puede sersigned
ounsigned
, por lo que necesitas pedir explícitamentesigned char
ounsigned char
si tu implementación depende de ello. Simplemente usachar
si pretendes representar caracteres de cadenas, ya que esto coincidirá con lo que tu plataforma pone en la cadena.La diferencia entre
signed char
yunsigned char
es la que cabría esperar. En la mayoría de las plataformas,signed char
será un número de complemento a dos de 8 bits que va de-128
a127
, yunsigned char
será un entero de 8 bits sin signo (de0
a255
). Tenga en cuenta que el estándar NO requiere que los tiposchar
tengan 8 bits, sólo quesizeof(char)
devuelva1
. Puedes obtener el número de bits de un char conCHAR_BIT
enlimits.h
. Sin embargo, hoy en día hay pocas plataformas, si es que hay alguna, en las que esto sea algo más que8
.Hay un buen resumen de este tema aquí.
Como otros han mencionado desde que publiqué esto, es mejor usar
int8_t
yuint8_t
si realmente quieres representar enteros pequeños.Si quieres utilizar un carácter como un pequeño entero, la forma más segura de hacerlo es con los tipos
int8_t
yuint8_t
.El rango de
signed char
es de -128 a 127; el rango deunsigned char
es de 0 a 255.El tipo
char
será equivalente a un char con signo o a un char sin signo, dependiendo del compilador, pero es un tipo distinto.Si utiliza cadenas de estilo C, utilice simplemente
char
. Si necesitas usar chars para la aritmética (bastante raro), especifica signed o unsigned explícitamente para la portabilidad.