ProblemWie wird ein Guint64-Wert gedruckt, wenn glib verwendet wird?
Ich mache Gebrauch von der GLib 2.0 Bibliothek und erklärte eine gunit64 Variable. Ich möchte seinen Wert auf dem Bildschirm ausgeben, aber es funktioniert nicht richtig.
-Code
Betrachten Sie den folgenden Code-Schnipsel als Beispiel. Ich deklariere eine Guint64-Variable und versuche, ihren Wert zu drucken.
guint64 myValue = 24324823479324;
printf("My Value: %d\n", myValue);
Warnung
ich diese Warnung:
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘guint64’
Ausgabe
ich eine seltsame negative Zahl auf dem Bildschirm erhalten:
Mein Wert: -1871285220
Weitere Kommentare
Ich habe versucht, die API-Dokumentation zu suchen, und ich fand das folgende unter guint64: 64
Eine ganze Zahl ohne Vorzeichen garantiert sein Bits auf allen Plattformen. Die Werte dieses Typs können von 0 bis G_MAXUINT64 (= 18,446,744,073,709,551,615) reichen.
Verwenden Sie zum Drucken oder Scannen von Werten dieses Typs G_GINT64_MODIFIER und/oder G_GUINT64_FORMAT.
Daher nehme ich an, dass ich entweder die Modifikator- oder Formatdefinitionen verwenden muss. Die Dokumentation zeigt jedoch nicht, wie sie verwendet werden. Kann mir bitte jemand helfen?
Aus irgendeinem Grund nicht funktioniert. Nichts wird gedruckt – Goaler444
@ Goaler444 Vielleicht wird Stdout gerade nicht wegen fehlender Zeilenschaltung gelöscht? Versuchen Sie 'printf (" Mein Wert:% "G_GUINT64_FORMAT" \ n ", meinWert);' stattdessen. – Ancurio
@ Goaler444 Es wäre interessant, genau zu erfahren, wie Ihr Code aussieht, es könnte etwas albern sein (wie eine fehlende Zeilenumbruch, wie Ancurio sagt). Das sollte wirklich funktionieren, und es ist der richtige Weg, es zu tun. – unwind