Ich deklariere eine Variable für einen 64-Bit-Zähler als:
long long call_count;
Was ist der Formatbezeichner, den ich in Druckanweisungen verwenden sollte?
Ich habe es versucht, %l, %ld, %ll. Keine scheint richtig zu sein.
Ich verwende den Diab C-Compiler zum Kompilieren meines Anwendungscodes für die Ausführung auf dem pSOS-Betriebssystem.
Laut C99 sollte es “%lld” sein (siehe zum Beispielhier). Wenn Diab C nicht C99 ist, müssten Sie sich die Compiler-Dokumentation ansehen, die ich mit einem schnellen Googeln nicht online finden kann.
Für ‘long long unsigned int’ sollten Sie “%llu” verwenden
– Atiq Rahman
8. Dezember 2013 um 11:08 Uhr
Es ist "%lli" (oder gleichwertig "%lld")
Graem Perrow
Verwendung von Microsoft und Watcom %I64d (großes Auge), andere verwenden %lld (Kleinbuchstaben ell ell).
“Verwenden Sie %I64d (Großbuchstabe I)”: erneut versuchen?
Die Formatbezeichner sind weniger mehrdeutig, wenn sie in sind fixed width (vorausgesetzt, es wird eine vernünftige Schriftart mit fester Breite verwendet).
– Traumlax
6. August 2013 um 5:36 Uhr
Caladan
Dies und noch etwas mehr wurde hier beschrieben: plattformübergreifendes Drucken von 64-Bit-Ganzzahlen mit printf
TL;DR: Sie können das PRId64-Makro (aus inttypes.h) verwenden, um 64-Bit-Ganzzahlen in Dezimalzahlen auf semi-portable Weise zu drucken. Es gibt auch andere Makros (wie PRIx64).
Vielleicht %lld? Ich denke, das ist das Format für gcc, ich weiß nichts über den Diab C-Compiler.
%lld ist seit langem der Standard-Konvertierungsspezifizierer, Windows ist der einzige, von dem ich weiß, dass dies nicht unterstützt wird (aber sie unterstützen nicht viele Standards). Außerdem ist dies spezifisch für die verwendete Standard-c-Bibliothek und nicht für den Compiler.
– Robert Gamble
20. Januar 2009 um 18:17 Uhr
Gerhard
Es ist %lld für signiert und %llu für unsigniert
%lld ist seit langem der Standard-Konvertierungsspezifizierer, Windows ist der einzige, von dem ich weiß, dass dies nicht unterstützt wird (aber sie unterstützen nicht viele Standards). Außerdem ist dies spezifisch für die verwendete Standard-c-Bibliothek und nicht für den Compiler.
– Robert Gamble
20. Januar 2009 um 18:17 Uhr
Aashish Kumar
long long t1; //signed
unsigned long long t2; //unsigned
printf("%lld",t1);
printf("%llu",t2);
14013800cookie-checkFormatbezeichner für „long long“yes