Avatar ·

¿Qué es unsigned char en C++ y en qué se diferencia de char normal?

¡Hola, colegas! Empecé a estudiar C++ y me encontré con confusión. En los libros de texto me encuentro constantemente con los tipos `char` y `unsigned char`. A primera vista, ambos almacenan caracteres, pero siento que hay una diferencia y es importante. Escribí un ejemplo simple: ```cpp #include int main() { char c = 255; unsigned char uc = 255; std::cout << "char: " << (int)c << std::endl; std::cout << "unsigned char: " << (int)uc << std::endl; return 0; } ``` En mi sistema (Windows, Visual Studio), la primera salida da -1, y la segunda — 255. Esperaba que ambos fueran 255. ¿Por qué sucede esto? ¿Y en qué casos se debe usar `unsigned char` en lugar de `char` normal? He leído que `char` puede ser signed o unsigned dependiendo del compilador, pero eso suena algo indefinido. También he oído que `unsigned char` se usa para trabajar con bytes y datos sin procesar, y `char` — para texto. Pero, ¿acaso los caracteres no son los mismos bytes? Explíquenme, por favor, de manera sencilla, con ejemplos.