Unterschied Long Int zu Int

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Unterschied Long Int zu Int

Beitrag von naums » Do Okt 06, 2011 3:35 pm

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
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Unterschied Long Int zu Int

Beitrag von cloidnerux » Do Okt 06, 2011 3:50 pm

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...
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Unterschied Long Int zu Int

Beitrag von Xin » Do Okt 06, 2011 4:18 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten