Seite 1 von 1

Unterschied Long Int zu Int

Verfasst: Do Okt 06, 2011 3:35 pm
von naums
Hallihallöchen,

Um auch mal wieder was über die C/C++-Programmierung zu fragen will ich hier mal eine Frage zu den Datentypen int und long int loswerden. Wo ist da genau der Unterschied? Ich verwende in meinen Programmen meistens int oder double und eigentlich nie mal long oder single. Was signed und unsigned macht ist mir klar, aber war macht das long und short? Sind die bei 32bit bzw. 64bit eigentlich noch aktuell?

MfG naums

Re: Unterschied Long Int zu Int

Verfasst: Do Okt 06, 2011 3:50 pm
von cloidnerux
http://www.proggen.org/forum/viewtopic. ... 3&start=70
http://www.proggen.org/forum/viewtopic.php?f=21&t=372
http://www.proggen.org/doku.php?id=theo ... esentation
Und da gibts noch ein paar mehr threads^^
Generell geht es hierbei um die Variablenlängen.
In C gibt es folgende "Grunddatentypen":
char = 1 byte
int = 2 oder 4 byte
float = 8 Byte
double = 10 Byte
keine Gewähr.

Nun wollte man aber auch kleine und große ints erlauben, dazu dienen die präfixe short und long.
short soll einen verkürzten int darstellen, also 2Byte, long einen "langen" int, wobei das meistens auch nicht länger als int ist, wie in den Threads zu sehen,
Dann hängen die Längen noch vom verwendeten System und Compiler ab.

Wir sollten vlt mal einen Wikieintrag dazu machen...

Re: Unterschied Long Int zu Int

Verfasst: Do Okt 06, 2011 4:18 pm
von Xin
naums hat geschrieben:will ich hier mal eine Frage zu den Datentypen int und long int loswerden. Wo ist da genau der Unterschied? Ich verwende in meinen Programmen meistens int oder double und eigentlich nie mal long oder single. Was signed und unsigned macht ist mir klar, aber war macht das long und short? Sind die bei 32bit bzw. 64bit eigentlich noch aktuell?
Die sind noch aktuell.

Schau mal auf diesen Link: limits.h.

Ein int garantiert Dir den Wertebereich von -32768 bis 32767. Das war auf 16 Bit Rechnern üblich. Ein 32 Bit-Integer verletzt diese Garantie nicht. 32 Bit sind auf 32 Bit Rechnern üblich.

Ein long int garantiert den Wertebereich von -2147483648 bis +2147483647 - auch auf 16 Bit Rechnern. Auf 64 Bit könnte der Datentyp grundsätzlich aber auch größer ausfallen. Der wird dann aber häufig als "long long int" bezeichnet.

Es gilt:
char <= short int <= int <= long int <= long long int

Ein Double hat 8 Byte (64 Bit). 80 Bit (10 Byte) hat die Intel-Architektur intern, die als "extended double" bezeichnet wird und von manchen Compilern als "long double" aus dem Prozessor ausgelesen.
Wer auf PowerPC oder Sparc Prozessoren unterwegs ist, kann auch eine 128Bit (16Byte) breite Präzision erhalten, diese werden dann gerne "double double" genannt.

Und weil diese ganze Benennerei im Prinzip Schwachsinn ist, hat C ab C99 exakte Datentypen wie int64_t. Da stellen sich dann nicht mehr so viele Fragen.