Repräsentiert eine 64-bit-Ganzzahl in GNU/Linux
Ich bin mit Ubuntu 10.10 (64-bit) mit gcc
und ich wollte eine 64-bit-Ganzzahl in meinem C++ Programm.
Auf meinem system die Ausgänge der sizeof(long)
, sizeof(long long int)
und sizeof(int64_t)
sind alle 8 bytes (64 bits).
Dem qualifier ( long
, long long
oder int64_t
) würden Sie empfehlen für die Verwendung von 64-bit-Ganzzahlen?
InformationsquelleAutor smilingbuddha | 2011-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
int64_t
-- Dieses ist, weil es die meisten tragbaren Darstellung. Die beiden anderen dargestellt werden können, anders als auf anderen Maschinen.InformationsquelleAutor Anthony Blake
int64_t. Wenn Sie benötigen 64 bits, erklären Sie ausdrücklich. Die Größe von long und long long variiert je nach Computer.
InformationsquelleAutor Lalaland
Tun, müssen Sie genau 64 bits oder mindestens 64 bit?
Je nachdem, was der
int64_t
,int_least64_t
oderint_fast64_t
am deutlichsten äußert Eure Absicht. (Alle drei sind fast sicher die gleiche Art, die auf die aktuellen Systeme, sondern dokumentieren Ihre Absicht ist wertvoll.)Alle Implementierungen müssen
int_least64_t
undint_fast64_t
. Es ist zumindest theoretisch möglich, dassint64_t
möglicherweise nicht existiert (sprich, wenn der compiler hat eine 128-bit-Typ, aber keine 64-bit-Typ, oder wenn Ganzzahlen mit Vorzeichen sind nicht dargestellt 2-Komplement).(Aber in jedem C99-ish Umsetzung die ich je gesehen habe,
long long
ist genau 64 bit, und dieint64_t
vorhanden.)InformationsquelleAutor Keith Thompson
Definieren benutzerdefinierter Typ für 64-bit-integer und verwenden Sie es in Ihrem code. Mit der Direktive #ifdef compiler kann den richtigen zu wählen. Das Beispiel für die Vereinigung einige Ganzzahlen:
Dieser header kann dieses Problem verursachen : stackoverflow.com/questions/49614169/...
InformationsquelleAutor vpp