Größe von Ganzzahl-Datentypen
-
Hi, ich habe mal eine Frage zu int-Datentypen (passt wohl auch zu anderen Typen):
Wie groß ist ein char,byte,int denn nun. Laut MS-Hilfe
char 1 byte
unsigned char 1 byte
short 2 byte
long 4 byte
usw.lediglich int und unsigned int haben demnach Systemabhängige Größen. Andere Quellen sprechen dagegen von völliger Implementierunsabhängigkeit dieser Größen. Lediglich size(char) <= size(short) <= ... und size(char) mind. 1 byte ist demnach sicher vorrausgestzt.
Wer hat denn nun Recht?
Und was ist mit den MS VS C++ - Typen _int8, _int16, ...
Das sind sicher reine MS-Erfindungen die mit dem Standard nichts zu tun haben, oder?Viele Grüße

-
Laut Standard gilt lediglich:
sizeof(char)==1Für alle anderen Typen sind bestimmte Mindestgrößen sichergestellt (short/int: 2 Byte, long 4 Byte) und daß immer short<=int<=long gilt.
(und "unsigned xyz" hat die selbe Größe wie "signed xyz")
-
In der limits.h (oder climits) stehen auch noch die maximalen und minimalen Werte der jeweiligen Datentypen drin.
-
#include<iostream> #include<limits> int main() { std::cout << "Zahlenbereich für int\n" << numeric_limits<int>::min() << " bis " << numeric_limits<int>::max() << endl; } //Zahlenbereich für Datentyp int
-
LAOES schrieb:
Und was ist mit den MS VS C++ - Typen _int8, _int16, ...
Das sind sicher reine MS-Erfindungen die mit dem Standard nichts zu tun haben, oder?das sind compiler-spezifische erweiterungen. <stdint.h> ist aber standard (afaik c-standard) und enthält typen mit festgelegten größen.
-
LAOES schrieb:
Hi, ich habe mal eine Frage zu int-Datentypen (passt wohl auch zu anderen Typen):
Wie groß ist ein char,byte,int denn nun.
Implementationsspezifisch. Die Grösse auf dem jeweiligen System kannst du mit sizeof bestimmen.
CStoll schrieb:
Für alle anderen Typen sind bestimmte Mindestgrößen sichergestellt (short/int: 2 Byte, long 4 Byte)
Nicht mal das. Lediglich die Relation ist sichergestellt, so dass zB ein long immer mindestens so gross ist wie ein short.