In C/C++, was eine unsigned char
verwendet wird? Wie unterscheidet sie sich von einer normalen char
?
Antworten
Zu viele Anzeigen?Ein wenig Googeln ergab este wo die Leute eine Diskussion darüber geführt haben.
Ein Zeichen ohne Vorzeichen ist im Grunde ein einzelnes Byte. Sie würden es also verwenden, wenn Sie ein Byte an Daten benötigen (z. B. um Flags ein- und auszuschalten, die an eine Funktion übergeben werden sollen, wie es in der Windows-API häufig der Fall ist).
Ein Zeichen ohne Vorzeichen verwendet das Bit, das für das Vorzeichen eines normalen Zeichens reserviert ist, als weitere Zahl. Dadurch ändert sich der Bereich auf [0 - 255] im Gegensatz zu [-128 - 127].
Im Allgemeinen werden vorzeichenlose Zeichen verwendet, wenn man kein Vorzeichen haben will. Dies macht einen Unterschied bei Dingen wie dem Verschieben von Bits (Shift erweitert das Vorzeichen) und anderen Dingen, wenn ein Zeichen als Byte behandelt wird, anstatt es als Zahl zu verwenden.
Zitiert aus dem Buch "The C Programming Laugage":
Der Qualifier signed
o unsigned
kann auf char oder eine beliebige ganze Zahl angewendet werden. Zahlen ohne Vorzeichen sind immer positiv oder Null und gehorchen den Gesetzen der Arithmetik modulo 2^n, wobei n die Anzahl der Bits des Typs ist. Wenn z.B. ein Zeichen 8 Bits hat, haben vorzeichenlose Zeichenvariablen Werte zwischen 0 und 255, während vorzeichenbehaftete Zeichen Werte zwischen -128 und 127 haben (in einer Zweier Komplement-Maschine). Ob einfache Zeichen vorzeichenbehaftet oder vorzeichenlos sind, ist maschinenabhängig, aber druckbare Zeichen sind immer positiv.