Typ _int64 verwenden



  • Ich hab in einem fremden Code gesehen, dass jemand eine Variable des typs _int64 verwendet hat.

    Da ich eine 64-Bit Zahl benötige und kein long long habe wollte ich das auch benutzen. Allerdings verhält sich die Variable so, wie eine normale long Variable, obwohl beim sizeof 8 Byte angezeigt werden.

    Ich habe bisher mit %ld darauf zugegriffen beim In/Output.



  • ANSI/ISO C kennt kein _int64 (aber long long). Also sag um welchen Compiler es geht. Hast du auch mal im Handbuch nachgelesen? Da dürften ja zumindest solche Standard unkonformen Erweiterungen erklärt sein.

    Im Zweifelsfall schau mal ob dein Compiler ein stdint.h hat. Dort findest du sicher ein int64_t



  • Ich benutze den MS C-Compiler 14.00..... for 80x86

    long long erkennt der nicht, weil das kein C89 ist.
    _int64 funktioniert ja soweit, doch die Variable verhält sich so wie eine 4 Byte Zahl, obwohl sie 8 Byte hat.



  • %ld ist halt auch falsch. %lld ist richtig.



  • Nimlot schrieb:

    Ich benutze den MS C-Compiler 14.00..... for 80x86

    long long erkennt der nicht, weil das kein C89 ist.

    ist C99 🙂

    _int64 funktioniert ja soweit, doch die Variable verhält sich so wie eine 4 Byte Zahl, obwohl sie 8 Byte hat.

    Wenn du es als long liest, ist ja klar, dass er nur nur die entsprechende Anzahl an Bytes liest. Bei Literalen musst du auch vorsichtig sein. Daher war ja auch mein Hinweis auf die Doku des Compilers. Da dürften ja gerade solche Feinheiten dokumentiert sein.


Anmelden zum Antworten