Wie kann man format unsigned long long int verwenden von printf?

#include <stdio.h>
int main() {
    unsigned long long int num = 285212672; //FYI: fits in 29 bits
    int normalInt = 5;
    printf("My number is %d bytes wide and its value is %ul. A normal number is %d.\n", sizeof(num), num, normalInt);
    return 0;
}

Ausgabe:

My number is 8 bytes wide and its value is 285212672l. A normal number is 0.

Ich nehme dieses unerwartete Ergebnis ist aus-Druck der unsigned long long int. Wie wollen Sie printf() eine unsigned long long int?

  • Ich habe gerade kompiliert dein code ( mit %anzeiiri ) mit gcc und der Ausgang war der richtige. Sind Sie auf der übergabe von Optionen an den compiler?
  • Beachten Sie, dass samsung bada ist newlib scheint nicht zu unterstützen, "%lld" : "developer.bada.com/forum/...
  • Siehe auch stackoverflow.com/questions/5140871/sprintf-for-unsigned-int64
  • Ich würde vorschlagen, mit Verwendung von stdint.h und explizit über die Anzahl von bits in eine variable. Wir sind immer noch in einer Phase des übergangs zwischen 32 und 64 bit-Architekturen, und "unsigned long long int" bedeutet nicht das gleiche auf beiden.
InformationsquelleAutor andrewrk | 2008-08-05
Schreibe einen Kommentar