Unterstützt GCC:
long long int
Was wäre eine 64-Bit-Ganzzahl?
Ist auch long long int
Teil der Norm?
Polaris878
Unterstützt GCC:
long long int
Was wäre eine 64-Bit-Ganzzahl?
Ist auch long long int
Teil der Norm?
Alex B
Ja, GCC unterstützt long long int
das Teil des C99-Standards ist.
Der Standard schreibt seine Größe nicht in Bits vor, sondern erfordert Werte von LLONG_MIN
und LLONG_MAX
in <limits.h>
implizieren es ist wenigstens 64-Bit (genau 64-Bit breite Integer-Typen sind int64_t
/uint64_t
aus <stdint.h>
).
LLONG_MIN
darf höchstens sein -9223372036854775807
LLONG_MAX
muss mindestens 9223372036854775807
Nur um hinzuzufügen. In Windows wäre das Äquivalent _int64
– vpram86
6. Oktober 2009 um 5:07 Uhr
Um genau zu sein, ist es eigentlich das Äquivalent von int64_t aus
– Alex B
6. Oktober 2009 um 5:10 Uhr
Ich kenne diese Überschrift nie! Vielen Dank!
– vpram86
6. Oktober 2009 um 6:18 Uhr
@ vpram86 “In Windows wäre das Äquivalent _int64” Auf dem Compiler meines Fensters ist es so int64_t/uint64_t
. Vielleicht meinst du “In Visuelles Studio sein Äquivalent wäre __int64
” ?
– chux – Wiedereinsetzung von Monica
24. Februar 2018 um 21:17 Uhr
long long int
ist ein Teil des C99-Standards, und ich weiß, dass GCC ihn unterstützt. Und jetzt kann ich es beweisen.
Auf meinem 32-Bit-Rechner
int main()
{
printf("%d\n", sizeof(long long int));
return 0;
}
zusammengestellt mit gcc
druckt 8 (8 Bytes * 8 Bits/Byte = 64 Bits).
size_t
Formatzeichenfolgen verwenden sollten "%zu"
nicht "%d"
(gleichfalls, ssize_t
verwenden müssen "%zd"
). Dies ist ein Problem auf 64-Bit-Plattformen, wo size_t oft ein 64-Bit-Typ ist, während int immer noch 32-Bit sein kann.
– bdonlan
6. Oktober 2009 um 4:05 Uhr
sizeof(char)==1 per Definition, aber das darf >= ein Byte sein. 64-Bit-Typen dürfen also sizef
– Johan Lundberg
7. August 2012 um 14:58 Uhr
Ja, long long
ist Teil von C99, sowie long long
Konstanten (10222333444555LL
) und ein paar Stützelemente. (LLONG_MAX
, llrint(d)
, llround(d)
einige andere.) Und gcc hat es jetzt seit einiger Zeit implementiert.
Um lange lange int-Variablen zu drucken:
long long int lli = 100000000;
printf("%lld\n", lli);
Lee B
long longs werden gut unterstützt, und das schon seit langem [sorry]. So wie ich es verstehe, hätte dies auf 64-Bit-Plattformen 128 Bit sein sollen, aber aus Kompatibilitäts-/Portabilitätsgründen in GCC wurde auf eine 64-Bit-Breite standardisiert.
Siehe auch: (u)int128_t, und dies Diskussion über die 128-Bit-Integer-Unterstützung von GCC
Markus W
Ich glaube das meist an unsigned long long
ist die traditionelle Darstellung einer 64-Bit-Ganzzahl. Ich gehe davon aus long long int
würde auch funktionieren, aber ich habe persönlich noch nie 64-Bit-Variablen gesehen, die so deklariert wurden.
long long int
ist nur eine vorzeichenbehaftete 64-Bit-Ganzzahl (oder mehr). Nichts besonders Ungewöhnliches daran.
– bdonlan
6. Oktober 2009 um 4:04 Uhr
Danke an alle, ich habe noch nie mit 64-Bit-Daten gespielt und bin heute Abend verdammt faul.
– Polaris878
6. Oktober 2009 um 4:04 Uhr
Beachten Sie, dass Sie in einer C99-Umgebung verwenden sollten
int64_t
in<stdint.h>
für eine portable 64-Bit-Ganzzahl. Wenn Sie sich nicht in einer C99-Umgebung befinden,long long
ist Ihre beste Wahl, aber es ist nicht garantiert, dass es 64 Bit breit ist.– Stefan Kanon
6. Oktober 2009 um 4:12 Uhr
ST: Nun, es ist garantiert sein wenigstens 64 Bit breit, also sollte er sich keine Sorgen machen, dass es irgendwo da draußen < 64 ist. Jedenfalls nicht in einer konformen Implementierung.
– DigitalRoss
6. Oktober 2009 um 4:52 Uhr