El printf
Funktion nimmt einen Argumenttyp an, z. B. %d
o %i
für eine signed int
. Ich sehe jedoch nichts für eine long
Wert.
Antworten
Zu viele Anzeigen?Auf den meisten Plattformen, long
y int
die gleiche Größe haben (32 Bit). Dennoch hat es seinen eigenen Formatbezeichner:
long n;
unsigned long un;
printf("%ld", n); // signed
printf("%lu", un); // unsigned
Für 64 Bit benötigen Sie eine long long
:
long long n;
unsigned long long un;
printf("%lld", n); // signed
printf("%llu", un); // unsigned
Oh, und natürlich ist es unter Windows anders:
printf("%l64d", n); // signed
printf("%l64u", un); // unsigned
Wenn ich 64-Bit-Werte ausdrucke, finde ich es oft hilfreich, sie in Hexadezimal zu drucken (bei so großen Zahlen handelt es sich in der Regel um Zeiger oder Bitfelder).
unsigned long long n;
printf("0x%016llX", n); // "0x" followed by "0-padded", "16 char wide", "long long", "HEX with 0-9A-F"
wird gedruckt:
0x00000000DEADBEEF
Übrigens bedeutet "long" nicht mehr so viel (auf Mainstream-x64). "int" ist die Standardgröße der Plattform, typischerweise 32 Bit. "long" hat normalerweise die gleiche Größe. Sie haben jedoch eine unterschiedliche Portabilitätssemantik auf älteren Plattformen (und modernen Embedded-Plattformen!). "long long" ist eine 64-Bit-Zahl und in der Regel das, was die Leute verwenden wollten, es sei denn, sie wussten wirklich, was sie taten, als sie ein Stück portablen Code für die x-Plattform bearbeiteten. Selbst dann hätten sie wahrscheinlich stattdessen ein Makro verwendet, um die semantische Bedeutung des Typs zu erfassen (z. B. uint64_t).
char c; // 8 bits
short s; // 16 bits
int i; // 32 bits (on modern platforms)
long l; // 32 bits
long long ll; // 64 bits
Damals war "int" 16 Bit lang. Man sollte meinen, dass es jetzt 64 Bits sind, aber nein, das hätte wahnsinnige Portabilitätsprobleme verursacht. Natürlich ist selbst dies eine Vereinfachung der geheimnisvollen und geschichtsträchtigen Wahrheit. Siehe wiki:Ganzzahlig
%ld
siehe printf
Referenz auf cplusplus.de
- See previous answers
- Weitere Antworten anzeigen