Es gibt mehrere Abkürzungen für eingebaute Typen.
short
ist ( signed
) short int
long
ist ( signed
) long int
long long
ist ( signed
) long long int
. Auf vielen Systemen ist short
16-Bit, long
ist 32-Bit und long long
ist 64-Bit. Beachten Sie jedoch, dass der Standard nur
Und eine Konsequenz daraus ist, dass auf einem exotischen System sizeof(long long) == 1
möglich ist.
Gemäß dem C
-Standard sind die Integraltypen so definiert, dass sie mindestens die folgenden Bereiche aufweisen:
Jeder kann so dargestellt werden, dass er einen größeren Bereich unterstützt. Auf den 32-Bit-Systemen haben int
und long
die gleiche 32-Bit-Darstellung.
Beachten Sie, dass negative Grenzen symmetrisch zu ihren positiven Gegenstücken sind, um Zeichen- und Betragsdarstellungen zu ermöglichen: der C-Sprachen-Standard gilt nicht für Zweierkomplement.
Auf 64-Bit-Systemen macht es keinen Unterschied in ihren Größen. Auf 32-Bit-Systemen mit einer langen Länge sind Speicherwerte von 64 Bit garantiert.
Um all diese Verwirrungen zu vermeiden, ist es immer besser, die Standard-Integraltypen zu verwenden: (u)int16_t, (u)int32_t and (u)int64_t
verfügbar über stdint.h
, was für Transparenz sorgt.
Ein int
auf 16-Bit-Systemen war 16 Bits. Ein " long
" wurde als 32-Bit-Integer eingeführt, aber bei 32-Bit-Systemen bedeuten long
und int
dasselbe (beide 32 Bit). Also auf 32- und 64-Bit-Systemen, long long
und long int
sind beide 64 Bit. Die Ausnahme ist 64-Bit-UNIX, wobei long
64 Bits ist.
Siehe den ganzen Wikipedia-Artikel für eine detailliertere Tabelle.
Der C-Standard schreibt keine spezifischen Breitenanforderungen für ganzzahlige Typen vor, außer für minimale Wertebereiche, die der Typ repräsentieren kann, und dass die Breiten nicht abnehmen: short <= int <= long int <= long long int
(ähnlich für unsigned Arten). long long
wurde übrigens nur Teil des Standards in C99 und C ++ 0x. Die erforderlichen Mindestbereiche finden Sie in diesem Wikipedia-Artikel .
long int
ist ein Synonym für long. long long int
ist ein Synonym für long long int
.
Die einzige Garantie, die Sie im Standard C ++ haben, ist, dass long long
mindestens so groß wie long
ist, aber länger sein kann. Dies ist in §3.9.1.2 im letzten öffentlich verfügbaren Entwurf der Norm n3242 festgelegt.
Tags und Links c c++ linux type-conversion