Hi
ich versuche mir gerade anhand des Kernighan & Ritchie Buches die
Programmiersprache C selbst beizubringen. Dabei bin ich über einen
Abschnitt gestolpert, dessen Inhalt mich ein wenig verwirrt.
Kapitel 2.7 - Type Conversions, Seite 43/44:
"The language does not specify whether variables of type char are signed
or unsigned quantities..."
Soweit, so gut. Bei
weiß man nicht, ob char vorzeichenbehaftet ist oder nicht. Es gibt
erstmal nur char. Wenn char nun in einen int umgewandelt wird, ist nicht
klar, ob der Inhalt signed oder unsigned sein soll. Soweit korrekt?
"...But arbitrary bit patterns stored in character variables may appear
to be negative on some machines, yet positive on others."
Okay, ein char ist 1 byte, also 8 bit, und kann laut ASCII Tabelle eine
Dezimalzahl zwischen 0 und 254 beinhalten. Die binäre Form dessen würde
ich als "arbitrary bit pattern" verstehen. Beispiel:
Char 'A' ist laut ASCII Tabelle die Dezimalzahl 65, dessen binär int (16
bit) Äquivalenz entsprechend 0000 0000 0100 0001 wäre.
Das ist das "arbitrary bit pattern", von denen die sprechen. Wie die
jeweilige Maschine dieses "arbitrary bit pattern" nun interpretiert
(signed oder unsigned), hängt von der Maschine ab. Korrekt?
"For portability, specify signed or unsigned if non-character data is to
be stored in char variables".
Hier kommt jetzt der Knackpunkt. Oben wurde geschrieben, dass ein char
weder signed noch unsigned ist. Ein char ist lediglich
und 'A' kann je nach verwendeter Maschine anders
interpretiert/umgewandelt werden.
Wie kann ich nun spezifizieren, wie eine Zahl in einer char Variable
gespeichert werden soll?
Wahrscheinlich ist es sehr trivial, und dennoch bin ich zu blöd dazu und
drehe mich eher im Kreis als dass ich gerade aus gehe. :D
Danke und Gruß