Frage von whaterasdsasdda, 35

was ist ein unsigned char in c++?

bitte genaue erklärung

Antwort
von TeeTier, 5

"char" ist ein Mitgied der drei kleinsten Integer-Familie in C und C++. (genau genommen ist "bool" auch ein Integertyp, aber das lassen wir jetzt mal beiseite)

Bei Systemen, die mit dem Zweierkomplement arbeiten, und deren Bytes genau 8 Bit breit sind, kann die char-Familie folgende Werte annehmen:

char: entweder 0 bis 255 oder -128 bis 127
unsigned char: 0 bis 255
signed char: -128 bis 127

Die Besonderheit von "char" im Gegensatz zu den meisten anderen Integertypen ist, dass er entweder "signed" oder "unsigned" sein kann, und laut Spezifikation unabhängig von diesen beiden betrachtet werden sollte: Es gibt also 3 Varianten.

Bei "normalen" Integern entspricht z. B. ein "int" einem "signed int", ein "char" aber NICHT unbedingt einem "signed char", denn es kann genauso gut auch ein "unsigned char" sein. Also Vorsicht!

Da der Wertebereich eines "char" (egal ob signed oder unsigned) für alle Zeichen (maximal 128 inkl. Null) eines kleinen Zeichensatzes (i. d. R. ASCII) ausreicht, nennt man ihn ebenso so (kommt also von "Character", also "Zeichen").

Und wenn man z. B. dem Großbuchstaben 'A' den Ganzzahlwert 65 zuweist und diese Zuweisung in einer Tabelle einträgt, die man dann ASCII nennt, dann kann ein "char" den Wert für einen Buchstaben speichern.

Und da man sich bei "unsigned char" keine Gedanken um die Repräsentation von vorzeichenbehafteten Zahlen machen muss, wird dieser Typ gerne dazu verwendet, Binärdaten zu bearbeiten, da "unsigned char" auf heutigen Systemen meistens 8 Bit breit ist, und damit einem Oktett, bzw. der umgangssprachlichen Auffassung eines Bytes entspricht.

Beim Bearbeiten von Binärdaten gibt es mit "unsigned char" DEUTLICH weniger Stolpersteine, als mit nackten "char" Werten. :)

Naja, viel Spaß! :)

Antwort
von triopasi, 25

char ist meist eine 8-bit vorzeichenbehaftete Ganzzahl. unsigned ist dann halt Vorzeichenlos.

Kommentar von whaterasdsasdda ,

char ist doch für buchstaben

Kommentar von triopasi ,

Jein.. man verwendet es so aber char an sich ist einfach eine Zahl. Kannst zB auch char buchstabe_a = 97; schreiben, das geht auch.

Kommentar von whaterasdsasdda ,

und um welche zeichen wird es dann erweitert? 

Kommentar von PWolff ,

Von der Wortbedeutung steht "char" ("character") tatsächlich für "Buchtabe". Aber nicht in Sprachen wie C, C++, Forth. Hier entscheidet sich erst zum Zeitpunkt der Verwendung, als was genau ein Byte oder ein Satz von Bytes interpretiert wird.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten