Unterstützt GCC long long int?

Lesezeit: 3 Minuten

Benutzer-Avatar
Polaris878

Unterstützt GCC:

long long int

Was wäre eine 64-Bit-Ganzzahl?

Ist auch long long int Teil der Norm?

  • 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

Benutzer-Avatar
Alex B

Ja, GCC unterstützt long long intdas 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>).

  1. LLONG_MIN darf höchstens sein -9223372036854775807
  2. 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 (das auch C99 ist).

    – 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);

Benutzer-Avatar
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

Benutzer-Avatar
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

1093240cookie-checkUnterstützt GCC long long int?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy