ULL-suffix auf ein numerisches literal
Ich habe über einige code wie folgt:
line += addr & 0x3fULL;
Offensichtlich, 'U' und 'L' sind nicht die hex-Ziffern. Ich vermute, dass die 'ULL' am Ende der hex-numerisches literal bedeutet "Unsigned Long Long" - bin ich richtig? (diese Art der Sache ist sehr schwierig, google) wenn dem so ist, dann ist dies eine Art suffix Modifikator auf die Zahl?
InformationsquelleAutor der Frage aneccodeal | 2012-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der
gcc
Handbuch:InformationsquelleAutor der Antwort NPE
Ja, das ist richtig.
0x
Präfix macht es ein hexadezimales literal.ULL
suffix macht esunsigned long long
.InformationsquelleAutor der Antwort Mysticial
Ich bin postulieren eine neue Antwort, weil ich erkenne, dass die aktuellen Antworten nicht zitieren, von einem cross-Plattform-Quelle. Die C++11-standard schreibt vor, dass ein literal mit
U
/u
undLL
/ll
Suffixe ist ein literal vom Typ:unsigned long long int
[Quelle]U
/u
ist die C/C++ - suffix für eine vorzeichenlose Ganzzahl.LL
/ll
ist die C/C++ - suffix für einenlong long
integer, das ist eine neue Typ in C++11 und muss eine Länge von mindestens 64 bit.Hinweise:
int
kann verzichtet werden, wenn alle Modifikatoren werden verwendet,unsigned long long
zum Beispiel. So wird diese definierenone
alsunsigned long long int
und eine beliebige Zahl zugewiesen werdenstatic_cast
zuunsigned long long int
:unsigned long long one = 1;
auto
. Das setzt die variable Typ den Datentyp zugewiesen Deklaration. Zum Beispiel, weil2ULL
ist einunsigned long long int
wörtlichetwo
wird definiert als einunsigned long long int
:auto two = 2ULL;
U
/u
suffix hatte, vorangegangen jeder Größe-suffix. Aber um C++14 werden die Suffixe angenommen, in beliebiger Reihenfolge, so dass diese nun einen gesetzlichenunsigned long long int
wörtliche13LLU
.InformationsquelleAutor der Antwort Jonathan Mee