Avatar ·

O que é unsigned char em C++ e como ele difere do char comum?

Olá, colegas! Comecei a estudar C++ e me deparei com uma confusão. Nos livros didáticos, encontro constantemente os tipos `char` e `unsigned char`. À primeira vista, ambos armazenam caracteres, mas sinto que há uma diferença, e ela é importante. Escrevi um exemplo simples: ```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; } ``` No meu sistema (Windows, Visual Studio), a primeira saída dá -1, e a segunda — 255. Eu esperava que ambos fossem 255. Por que isso acontece? E em quais casos devo usar `unsigned char` em vez do `char` comum? Li que `char` pode ser signed ou unsigned dependendo do compilador, mas isso soa meio incerto. Também ouvi dizer que `unsigned char` é usado para trabalhar com bytes e dados brutos, enquanto `char` é para texto. Mas caracteres não são os mesmos bytes? Expliquem, por favor, de forma simples, com exemplos.