Was ist der Zweck von signed char, wenn sowohl char als auch signed char im Bereich von -127 bis 127 liegen? An welcher Stelle verwenden wir signed char anstelle von char?
Antworten
Zu viele Anzeigen?-
unsigned char
ist vorzeichenlos. -
signed char
unterzeichnet ist. -
char
kann vorzeichenlos sein o abhängig von Ihrer Plattform unterzeichnet.
Utilice signed char
wenn Sie unbedingt eine Unterschrift wollen.
Möglicherweise verwandt: Was bedeutet es, wenn ein Zeichen unterzeichnet wird?
Es ist die Umsetzung definiert, ob plain char
verwendet die gleiche Darstellung wie signed char
o unsigned char
. signed char
war eingeführt, weil einfache char
war nicht ausreichend spezifiziert. Außerdem gibt es die Botschaft, die Sie an Ihre Leser senden:
- einfach
char
: Zeichendaten signed char
: kleine Igelunsigned char
: Rohspeicher
( unsigned char
kann auch verwendet werden, wenn Sie eine Menge bitweiser Operationen durchführen Operationen durchführen. In der Praxis überschneidet sich das eher mit dem Rohspeicher Nutzung).
Siehe Lamia,
Zunächst möchte ich den Hintergrund für Ihre Frage vorbereiten.
................................................
char ist ein Datentyp mit zwei Arten:
Zeichen ohne Vorzeichen;
unterzeichnete Zeichen;
(d.h. INTEGRALE DATEN)
.................................................
In verschiedenen Büchern wird dies folgendermaßen erklärt:
char 1byte -128 bis 127 (d. h. standardmäßig vorzeichenbehaftetes Zeichen)
signiertes Zeichen 1Byte -128 bis 127
Zeichen ohne Vorzeichen 1Byte 0 bis 255
.................................................
noch etwas: 1Byte=8 Bits (Null bis 7. Bit)
Da das Flagregister des Prozessors das 7. Bit für die Darstellung des Vorzeichens reserviert (d. h. 1=+ve & 0=-ve)
-37 wird als 1101 1011 dargestellt (das höchstwertige Bit ist 1),
+37 wird als 0010 0101 dargestellt (das höchstwertige Bit ist 0).
.................................................
ähnlich wie bei char wird das letzte Bit standardmäßig als vorzeichenbehaftet angenommen
Und warum?
Weil char auch von den ASCII-Codes der einzelnen Zeichen abhängt (z.B. A=65).
Auf jeden Fall verwenden wir char und benutzen nur 7 Bits.
In diesem Fall, um den Speicherbereich für char/int um 1 Bit zu erhöhen, verwenden wir unsigned char oder unsigned int;
Vielen Dank für die Frage.