Avatar ·

Was ist unsigned char in C++ und wie unterscheidet es sich von normalem char?

Hallo Kollegen! Ich habe angefangen, C++ zu lernen, und bin auf Verwirrung gestoßen. In Lehrbüchern stoße ich ständig auf die Typen `char` und `unsigned char`. Auf den ersten Blick speichern beide Zeichen, aber ich habe das Gefühl, dass es einen Unterschied gibt und dieser wichtig ist.\n\nIch habe ein einfaches Beispiel geschrieben:\n\n```cpp\n#include \n\nint main() {\n char c = 255;\n unsigned char uc = 255;\n \n std::cout << "char: " << (int)c << std::endl;\n std::cout << "unsigned char: " << (int)uc << std::endl;\n \n return 0;\n}\n```\n\nAuf meinem System (Windows, Visual Studio) gibt die erste Ausgabe -1 und die zweite 255. Ich hatte erwartet, dass beide 255 wären. Warum ist das so? Und in welchen Fällen sollte man `unsigned char` anstelle von normalem `char` verwenden?\n\nIch habe gelesen, dass `char` je nach Compiler signed oder unsigned sein kann, aber das klingt irgendwie unbestimmt.