Schlüsseldifferenz: Signiertes Zeichen und vorzeichenloses Zeichen sind zwei Datentypen, die bei der C-Programmierung verwendet werden. Zeichen ohne Vorzeichen und mit Vorzeichen werden zum Speichern von Zeichen verwendet und bestehen aus einem Bereich von 8 Bit. Vorzeichenlose Zeichen haben Werte zwischen 0 und 255, wohingegen vorzeichenbehaftete Zeichen Werte von –128 bis 127 haben (auf einer Maschine mit 8-Bit-Bytes und Zweierkomplement-Arithmetik).
C90 hat C aktiviert, um Schlüsselwörter zu verwenden, die mit char signiert und nicht signiert sind. Es ist wichtig zu beachten, dass sie nur verwendet werden, wenn mit kleinen Integerwerten gearbeitet werden soll. Das signierte Zeichen und das nicht signierte Zeichen weisen auf einem 16-Bit-Computer jeweils 8-Bit-Bytes auf. Sie unterscheiden sich vor allem in der von ihnen vertretenen Bandbreite. Der Bereich von vorzeichenlosen Zeichen liegt zwischen 0 und 255, wohingegen die Zeichen zwischen Zeichen und vorzeichenbehafteten Zeichen zwischen -128 und 127 liegen.
Die Umwandlung von char in int-Werte wird automatisch von C ausgeführt. Es ist jedoch immer noch von der Maschine abhängig, die entscheidet, dass das Ergebnis negativ ist oder nicht. Das Großbuchstabe A entspricht dem ganzzahligen Wert von 65.
Die mit char verwendeten Ausdrücke "unsigned" und "sign" bedeuten, dass, wenn der Inhalt dieser acht Bits in eine Ganzzahl interpretiert wird, diese Ausdrücke einen Unterschied machen können. Der Zeichendatentyp ist normalerweise standardmäßig vorzeichenlos. Im C ++ - und ANSI-C-Modus gibt es jedoch eine Option, um sie explizit als signiertes oder nicht signiertes Zeichen zu deklarieren. In vorzeichenlosen char werden 8 Bits als Datenbits verwendet, wohingegen in der Speicherdarstellung von signiertem char 1 Bit (höchstwertiges Bit) für vorzeichenbehaftete Bits und 7 Bits als Datenbits verwendet werden. Wenn das vorzeichenbehaftete Bit 0 ist, bedeutet dies, dass die Zahl positiv ist. Wenn das vorzeichenbehaftete Bit 1 ist, ist die Zahl negativ.
Vergleich zwischen signiertem Zeichen und unsigniertem Zeichen:
Signed Char | Unsigniertes Zeichen | |
Angebot | -128 bis +127 | 0 bis 255 |
Typische Bitbreite | 1 Byte | 1 Byte |
Beispiel (x = 10000010) | Signiertes Zeichen x = -2 | Vorzeichenloses Zeichen = 82 |
Darstellung | 1 Bit = Bit mit Vorzeichen 7 Bit = Datenbits | 8 Bit = Datenbits |
Erklärung | Signiertes Zeichen b | Vorzeichenloser Charakter a |