Was ist der Unterschied zwischen long long und long int

8

Ich kenne den Unterschied zwischen lang und int Aber was ist der Unterschied zwischen "long long" und "long int"

?     
Syedsma 11.08.2011, 13:56
quelle

8 Antworten

24

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

erfordert %Vor%

Und eine Konsequenz daraus ist, dass auf einem exotischen System sizeof(long long) == 1 möglich ist.

    
André Caron 11.08.2011, 14:00
quelle
9

Gemäß dem C -Standard sind die Integraltypen so definiert, dass sie mindestens die folgenden Bereiche aufweisen:

%Vor%

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.

    
Nicola Musatti 11.08.2011 14:05
quelle
4

long long ist möglicherweise ein größerer Typ als long int . Zum Beispiel wäre auf x86 32 Bit long long ein 64-Bit Typ anstatt 32 Bit für long int .

    
Mark B 11.08.2011 13:59
quelle
3

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.

    
Arun 20.08.2011 06:29
quelle
2

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.

    
richardolsson 11.08.2011 14:00
quelle
1

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 .

    
Kerrek SB 11.08.2011 14:03
quelle
0

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.

    
pmr 11.08.2011 14:02
quelle
0

Ich denke :

"long" verdoppelt die Anzahl der Bits, die dem Datentyp zugewiesen sind. So lange (32 Bits?) Werden 64 Bits. Int (16 Bits?) Wird 32 Bits.

    
cs94njw 11.08.2011 14:10
quelle

Tags und Links