¿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.