Hi, On Wed, 20 Aug 2003, Daniel Feist wrote:
Das gilt nur für die anderen Ganzzahlentypen. Der Wertebereich von 'char' ist vom Compilerbauer frei wählbar und kann 'signed char', 'unsigned char' oder wie ich gerade lese eine Mischform sein.
"Mischform?" fragt Ihr Euch jetzt: Type char may be a "pseudo-unsigned" integral type - that is, it can contain only nonnegative values, but it is treated as if it were a signed type when performing the usual unary conversions.
(Samuel P. Harbison, Guy L. Steele: C: A Reference Manual)
Ist aber Unsinn. 6.2.5 #15: The three types char, signed char, and unsigned char are collectively called the character types. The implementation shall define char to have the same range, representation, and behavior as either signed char or unsigned char.35) NB der letzten Halbsatz. Das Verhalten von 'char' muss exakt mit entweder 'signed char' oder 'unsigned char' uebereinstimmen. Nix Mischform.
Genau so ist das - es ist ja so, dass da mit signed und unsigned nicht nur bei char so ist, sodern auch bei anderen - hier eine kleine Tabelle:
char, signed char 1 Byte == 8 Bit -128 +127
Nein, du hast nicht verstanden worum es ging. 'char' ist ein _dritter_ Typ, neben 'signed char' und 'unsigned char'. Seine Attribute sind gleich denen von _entweder_ 'signed char' _oder_ 'unsigned char'. Das ist ein Unterschied zu den anderen integer Typen, wo 'xx' implizit die signed Variante ist (xx == {short int,int,long,long long}), d.h. fuer diese gibt es nur jeweils zwei Varianten. Ein char hat auch nicht immer 8 Bit. Genau wie die Breiten aller anderen von dir angegebenen Typen nicht festgelegt ist. Insbesondere ist "long" sehr oft auch 64bit gross. Ciao, Micha.