Was ist die "long" - Datentyp verwendet?
Ich habe die Programmierung in C++ für eine Weile jetzt, und ich bin ziemlich vertraut mit den meisten von dem Zeug. Eine Sache habe ich nie verstanden, ist aber das "long" - Datentyp.
Ich es gegoogelt, aber ich weiß noch nicht, was es ist. Ich habe Seiten gefunden, die sagen, es ist die gleiche Größe und hat die gleiche Reichweite wie ein int. Also, was wäre der Punkt in es zu benutzen?
Fand ich einen anderen stack overflow Frage zu dieser hier:
Unterschied zwischen long und int-Datentypen
Und es scheint, dass der einzige Unterschied zwischen den beiden ist, dass manchmal die Größe ist unterschiedlich auf verschiedenen Systemen. Bedeutet das, dass eine Anwendung, die lange auf einer 64bit-Maschine funktioniert nicht auf einem 32-bit-Maschine? Wenn ja, dann wäre es nicht besser, nicht Sie überhaupt nicht?
Auch habe ich bemerkt, Zeug namens "long int" oder sogar "long long"! Ist es eine Daten-Typ oder ein modifier?
InformationsquelleAutor der Frage Alex | 2010-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist compiler-abhängig. Meine standards-fu ist ein wenig eingerostet, aber ich glaube es ist wie folgt definiert:
wo:
Was bedeutet, dass es durchaus Gültigkeit zu haben
char = short = int = long = long long = 64bits
und in der Tat Compiler einige DSPs sind so konzipiert, dass Weg.Dies unterstreicht die Bedeutung der tatsächlich Lesen Ihrer compiler-Dokumentation.
InformationsquelleAutor der Antwort slebetman
long int
ist das gleiche wielong
(nur alsshort int
ist das gleiche wieshort
).long long
ist ein distinct-Datentyp eingeführt, indem mehrere Compiler und verabschiedet von C++0x.Beachten Sie, dass es gibt keine solche Sache wie
long long long
:InformationsquelleAutor der Antwort fredoverflow
Aus einer der Antworten in der Frage, die du verlinkt:
Ich kann nicht denken, einen besseren Weg, es zu erklären.
InformationsquelleAutor der Antwort Nate
long
ist garantiert (mindestens) 32-bit.int
ist nur garantiert, (mindestens) 16 bits. auf 16 - und 8-bit-Systemelong
vorgesehenen Bereich auf Kosten der Effizienz.cheers & hth.,
InformationsquelleAutor der Antwort Cheers and hth. - Alf
Dies ist, was der C++03 standard sagt (3.9.1/2) :
Also :
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Dies ist, was der C++0x (3.9.1/2) und C99 (6.2.5/4) standards sagen :
long
ist synonym vonlong int
long long
existiert nicht in C++03, aber wird in C++0x.InformationsquelleAutor der Antwort icecrime
Ich habe gefragt, die gleiche Sache. Und festgestellt, dass
long
ist jetzt nutzlos.Vor dem Aufkommen von 64-bit-Systeme, die de facto standard für C integer-Typen war:
char
= (u
)int8_t
(Beachten Sie, dass C älter als Unicode.)short
=int16_t
int
=intptr_t
[bis-64-bit],int_fast16_t
long
=int32_t
[bis-64-bit],intmax_t
[bis 1999]long long
=int64_t
oderintmax_t
Heute jedoch
long
hat keine einheitliche Semantik.InformationsquelleAutor der Antwort dan04
Wenn Sie möchten, eine Ganzzahl, ist garantiert 32 bit oder 64 bit, es gibt solche Typen, z.B. int64_t. Wenn Sie wirklich wollen, um sicherzustellen, dass Ihre int sind von einer solchen Größe, die diese Typen verwenden, statt lange, lange, lange, etc. Sie müssen
cstdint
für diese (stdint.h in C).InformationsquelleAutor der Antwort pythonic metaphor