PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Größe von Datentypen auf Linux und Windows



SeeksTheMoon
20-03-2004, 14:53
Sind die primitiven Datentypen char, float, int usw auf i386 (also 32Bit) unter Windows und Linux gleich groß?

Lin728
20-03-2004, 16:22
Bei Java ist das überall gleich, sogar wenn Java auf einem Siemens-Handy mit 16bit läuft hat das int feine 32bit hat.

Bei C ist das hauptsächlich CPU abhängig, bei gcc ist das unter Windows und Linux ziemlich sicher gleich.

anda_skoa
20-03-2004, 22:49
Das hat eigentlich nichts mit dem Betriebsystem zu tun, sondern ist dem Compiler überlassen, wenn es die Sprache nicht explizit festschreibt, so wie das Java zum Beispiel macht.

In C oder C++ ist das ziemlich vage definiert, da muss ein char mindestens ein Byte lang sein, ein int darf nicht kürzer als ein char sein, ein long nicht kleiner als ein int, usw.

Es gibt übliche Werte:
- char 1 Byte
- int 4 Bytes
- long 4 Bytes auf 32Bit Prozessoren, 8 Bytes auf 64Bit Prozessoren.

Aber es wäre zB auch gültig, alle drei Typen 2 Bytes lang zu machen.

Ciao,
_

SeeksTheMoon
21-03-2004, 09:47
ich habe folgendes herausgefunden:

Datentyp Windows VC++6 Linux gcc
int 4 ~
unsigned int 4 ~
long 4 ~
short 2 ~
double 8 ~
float 4 ~
long double 8 12
char 1 ~
unsigned char 1 ~

Der Cygwin/Mingw-GCC dürfte also Werte wie der unter Linux liefern.

bischi
21-03-2004, 12:40
Je nach Sprache und Compiler unterschiedlich, beispielsweise für Sun-Java:

http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Datatype.htm

MfG Bischi

peschmae
21-03-2004, 17:15
Das gilt afaik nicht nur für Sun Java sondern für alle Javas (also auch IBM, Blackdown, Kaffe, GCJ, Jikes)

Wies bei anderen Sprachen (Pascal, etc) aussieht weiss ich nicht. Mal abgesehen von den schon erwähnten C/C++. Ich denke mal dass die meisten so kompatibel wie möglich zu den weitestverbreiteten C/C++-Compilern sein wollen.

MfG Peschmä

SeeksTheMoon
21-03-2004, 22:47
mit Java das ist klar; ich wollte speziell auf C/C++ hinaus (das hätte ich auch mal sagen sollen :D)