Moin,
* Daniel Feist
On Wed, 20 Aug 2003, Thorsten Haude wrote:
* Daniel Feist
[2003-08-18 10:12]: Genau so ist das - es ist ja so, dass da mit signed und unsigned nicht nur bei char so ist, sodern auch bei anderen
Nein, eben nicht. Der Typ 'char' hat eine ganz besondere Rolle. Nur bei den anderen integralen Typen ist <typ> == signed <typ>. Die Längen, die Du anschließend in der Tabelle aufführst, sind auch nur Zufall, die Typen können auch eine andere Länge haben. Es gibt zwar einige Regeln, aber nur Mindestgrößen: (signed) int: INT_MIN...INT_MAX unsigned int: 0...UINT_MAX Mit INT_MIN <= -32767, INT_MAX >= 32767, UINT_MAX >= 65535 Und so weiter, mit char >= 8 Bit, short >= 16 Bit, long >= 32 Bit. Außerdem gibt es noch CHAR_BIT, das die Anzahl Bits für den Typ char enthält. (Kann ich nicht fein aus der Referenz abtippen?)
printf("a = %c\n", b); /*Überrascht?*/
Nein.
Wichtig ist, dass der richtige Datentyp mit %c dem Compiler richtig gesagt wird - dann weiß dieser, dass er die ASCII-Tabelle nehmen soll - hätte man eben %d genommen, wäre 65 richtig ausgegen worden.
Richtig ist, daß Du printf() mitteilst, wie es den Parameter interpretieren soll. Du kannst auch einen Pointer als Integral interpretieren, kein Problem.
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com
Einfach löschen, was Du nicht mehr brauchst.
Hallo? Jemand zuhause? Thorsten -- Calvin: "Who can fathom the feminine mind?" Hobbes: "I like `em anyway"