Nehmen Sie folgendes:C: Drucken große Zahlen
#include <stdio.h>
main() {
unsigned long long verybig = 285212672;
printf("Without variable : %llu\n", 285212672);
printf("With variable : %llu", verybig);
}
Dies ist die Ausgabe des obigen Programms ist:
Without variable : 18035667472744448
With variable : 285212672
Wie Sie aus dem oben sehen können, wenn printf
geben die Zahl als Konstante, druckt einige große falsche Zahl, aber wenn der Wert zuerst in einer Variablen gespeichert wird, druckt printf
die richtige Zahl.
Was ist der Grund dafür?
aber ich denke, Compiler ist intelligent genug,%, um herauszufinden, u in printf format spec, try printf ("% d% u", ~ 0, ~ 0) .. beide Werte werden wie erwartet ausgegeben. – sud03r
Nein - diese Datentypen haben die gleiche Größe - es ist printf(), das herauszufinden - versuchen % d mit 'a'. – paxdiablo
Pax: Das ist auch in Ordnung, Zeichen Literale sind Integer-Konstanten. – caf