C printf integer-Typ U32
Ich habe den hex-Wert 0x5a800000000b
und ich versuche zu bekommen eine printf-Anweisung in C, um es zu drucken auf der Konsole.
Bisher (da bin ich nutzlos in C) ich bin in der Lage, das 'b' zu drucken, verwenden Sie die syntax:
printf("Hex value%x\n", value);
Wird der Wert gespeichert ist, in einen ganzzahligen Typ U32, aber nach dem Versuch, alle verschiedenen Kombinationen von %llx, %lx, nur ich bekomme immer compiler-Warnungen.
Ich vermute, dass ich bekomme die printf-syntax falsch, aber ich kann nicht scheinen zu finden, die richtigen % - option, kann mir jemand helfen?
Dank
- Haben Sie versucht
%ulx
oder%ullx
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht ein problem mit der
printf
.Das problem ist, dass eine 32 bit-variable nicht den Wert
0x5a800000000b
. 32 bit kann halt nur 8 hex-Ziffern: 0x0000000b. Daher derb
auf die Ausgabe.Verwahrt das so einen großen Wert, sollten Sie eine 64-bit variable.
Beachten Sie auch die Doppelzimmer
L
am Ende. Es teilt dem compiler mit, dass die Konstante ist auch einelong long
.Dann können Sie
%llx
imprintf
format-string.Gibt es einige vordefinierte Makros, die für diese Typen:
Beispiel:
PRId62
ein Tippfehler?Den Wert 0x5a800000000b ist mehr, dass 32 bits, so dass Sie ein
long
.Beachten Sie, dass die hex-Konstanten enden muss
l
,.uint64_t
in solchen Fällen.