Forum: PC-Programmierung Integer-Datentypen in C


von Thomas F. (thomas-hn) Benutzerseite


Lesenswert?

Hallo,

der Integer bei C ist ja grundsätzlich maschinenabhängig.
Nun würde mich aber mal interessieren welche Aussagen über Integer fest 
vereinbart sind und wo diese nachzulesen sind.

Beim C99-Standard habe ich beispielsweise gefunden, dass ein short 
mindestens 16 Bit lang sein muss und ein long mindestens 32 Bit. In 
anderen Aussagen findet man dann aber auch so Sachen wie "Der General 
C-Standard besagt, dass für die Anzahl Bits gilt: char <= short <= int 
<= long".

Und so gibt's noch weitere Aussagen die sich teilweise aber gegenseitig 
"beißen".

Weiß hier jemand wie die Integer-Typen bei C/C++ genau definiert sind 
und in welchem Standard das jeweils nachzulesen ist?

Vielen Dank,

Thomas

von Εrnst B. (ernst)


Lesenswert?

Was spricht gegen ein
#include <stdint.h>

von (prx) A. K. (prx)


Lesenswert?

Thomas Finke schrieb:

> Und so gibt's noch weitere Aussagen die sich teilweise aber gegenseitig
> "beißen".

Als da wären?

> Weiß hier jemand wie die Integer-Typen bei C/C++ genau definiert sind
> und in welchem Standard das jeweils nachzulesen ist?

Du hast das bereits aufgezählt. In C89 sind die Mindestgrössen durch die 
Vorgaben für Zeugs wie MIN_INT festgelegt, und eben die von dir schon 
zitierte relative Ordnung. Das wars auch schon.

von Sven P. (Gast)


Lesenswert?

Thomas Finke schrieb:
> der Integer bei C ist ja grundsätzlich maschinenabhängig.
Jein, in grober Näherung ist der Compilerabhängig.

> Nun würde mich aber mal interessieren welche Aussagen über Integer fest
> vereinbart sind und wo diese nachzulesen sind.
In erster Linie im Handbuch deines Compilers. Hält sich der an weitere 
Standards (etwa C99), dann kannst du natürlich auch in diesen 
weiterlesen.

von Rolf M. (rmagnus)


Lesenswert?

Thomas Finke schrieb:
> Beim C99-Standard habe ich beispielsweise gefunden, dass ein short
> mindestens 16 Bit lang sein muss und ein long mindestens 32 Bit.

Richtig. Das steht zwar nicht direkt so drin, ergibt sich aber indirekt 
über den Wertebereich, den sie mindestens können müssen.

> In anderen Aussagen findet man dann aber auch so Sachen wie "Der General
> C-Standard besagt, dass für die Anzahl Bits gilt: char <= short <= int
> <= long".

Auch das stimmt.

> Weiß hier jemand wie die Integer-Typen bei C/C++ genau definiert sind

Zusätzlich zu dem, was du schreibst, muß char 8 mindestens 8 Bit und 
long long mindestens 64 Bit sein. Dann hat jeder dieser Typen außer char 
ein Vorzeichen, wenn man nicht explizit unsigned davor schreibt. Bei 
char ist das vom Compiler abhängig. Außerdem ist sizeof(char) immer 1.

> und in welchem Standard das jeweils nachzulesen ist?

ISO/IEC 9899:2011 (oder einer der Vorgänger. Die sind zwar ungültig, 
aber definieren diese Sachen gleich).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.