Avatar ·

Qu'est-ce que unsigned char en C++ et en quoi diffère-t-il du char ordinaire ?

Bonjour, collègues ! J'ai commencé à étudier le C++ et j'ai rencontré une confusion. Dans les manuels, je vois constamment les types `char` et `unsigned char`. À première vue, ils stockent tous les deux des caractères, mais je sens qu'il y a une différence, et qu'elle est importante. J'ai écrit un exemple 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; } ``` Sur mon système (Windows, Visual Studio), le premier affichage donne -1, et le second 255. Je m'attendais à ce que les deux soient 255. Pourquoi cela ? Et dans quels cas faut-il utiliser `unsigned char` au lieu du `char` ordinaire ? J'ai lu que `char` peut être signé ou non signé selon le compilateur, mais cela semble un peu vague. J'ai aussi entendu dire que `unsigned char` est utilisé pour travailler avec des octets et des données brutes, et `char` pour le texte. Mais les caractères ne sont-ils pas les mêmes octets ? Expliquez-moi, s'il vous plaît, simplement, avec des exemples concrets.