Was ist das Argument für printf, das lange formatiert?
Den printf
- Funktion nimmt ein argument geben, wie %d
oder %i
für eine signed int
. Allerdings sehe ich nicht alles für ein long
Wert.
InformationsquelleAutor der Frage Thomas Owens | 2008-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen eine
l
(kleingeschrieben Buchstaben L) direkt vor dem Bezeichner.InformationsquelleAutor der Antwort postfuturist
Ich denke du meinst:
oder
InformationsquelleAutor der Antwort Blorgbeard
Auf den meisten Plattformen
long
undint
sind die gleiche Größe (32 bits). Noch, es hat seine eigenen format-Bezeichner:64 bits wollen Sie eine
long long
:Oh, und natürlich ist es anders bei Windows:
Häufig, wenn ich drucken 64-bit-Werte, ich finde es hilfreich, drucken Sie Sie in hex (in der Regel mit zahlen, die große, Sie sind Zeiger oder bit-Felder).
drucken:
Btw, "lange" bedeutet nicht, dass viel mehr (auf den mainstream-x64). "int" ist die Plattform-default-int Größe, in der Regel 32 bit. "lange" ist in der Regel die gleiche Größe. Allerdings haben Sie unterschiedliche Portabilität Semantik auf älteren Plattformen (und moderner embedded-Plattformen!). "long long" ist ein 64-bit-Zahl und in der Regel, was die Menschen bedeutete, zu verwenden, es sei denn, Sie wirklich, wirklich wussten, was Sie Taten Bearbeitung ein Stück x-Plattform portable code. Selbst dann, Sie hätte wahrscheinlich verwendet ein makro, anstatt zu erfassen, die semantische Bedeutung der Art (z.B. uint64_t).
Zurück in den Tag, "int" 16 bits. Sie würden denken, es würde nun 64 bit ist, aber Nein, das verursacht hätte verrückt portabilitätsprobleme. Natürlich, auch dies ist eine Vereinfachung des arkanen und Geschichte-reiche Wahrheit. Sehen wiki:Integer
InformationsquelleAutor der Antwort Dave Dopson
Es hängt, wenn Sie unter Bezugnahme auf unsigned long die Formatierung Charakter ist
"%lu"
. Wenn Sie sich beziehen, unterschrieben lange die Formatierung Charakter ist"%ld"
.InformationsquelleAutor der Antwort krato
%ld
sieheprintf ()
- Referenz auf cplusplus.comInformationsquelleAutor der Antwort Rob Walker
In den Fall, Sie schauen, um zu drucken
unsigned long long
wie ich war, verwenden Sie:Für alle anderen Kombinationen, ich glaube, Sie verwenden die Tabelle, aus die printf-Handbuchwobei die Zeile, dann die Spalte label für jede Art, die Sie versuchen zu drucken (wie ich mit
printf("%llu", n)
oben).InformationsquelleAutor der Antwort Dolan Antenucci
Ich denke, diese Frage zu beantworten, definitiv würde erfordern die Kenntnis der compiler den Namen und die version, die Sie verwenden und die Plattform (CPU Typ, OS etc.) dass es kompilieren.
InformationsquelleAutor der Antwort Andrew O'Reilly