¿Qué es un unsigned char?

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 ser signed o unsigned, por lo que necesitas pedir explícitamente signed char o unsigned char si tu implementación depende de ello. Simplemente usa char si pretendes representar caracteres de cadenas, ya que esto coincidirá con lo que tu plataforma pone en la cadena.

La diferencia entre signed char y unsigned 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 a 127, y unsigned char será un entero de 8 bits sin signo (de 0 a 255). Tenga en cuenta que el estándar NO requiere que los tipos char tengan 8 bits, sólo que sizeof(char) devuelva 1. Puedes obtener el número de bits de un char con CHAR_BIT en limits.h. Sin embargo, hoy en día hay pocas plataformas, si es que hay alguna, en las que esto sea algo más que 8.

Hay un buen resumen de este tema aquí.

Como otros han mencionado desde que publiqué esto, es mejor usar int8_t y uint8_t si realmente quieres representar enteros pequeños.

Comentarios (3)

Si quieres utilizar un carácter como un pequeño entero, la forma más segura de hacerlo es con los tipos int8_t y uint8_t.

Comentarios (2)

El rango de signed char es de -128 a 127; el rango de unsigned 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.

Comentarios (0)