Warum habe ich im angegebenen Programm unterschiedliche Ergebnisse für jedes der printfs erhalten?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
Und es zeigt die folgende Ausgabe:
44000002048.000000
44000000000.000000
doublenach floatin der Sprache C erfolgt? Oder möchten Sie wissen, welche Werte sich aus der Konvertierung ergeben, dh welche Auswirkungen die Konvertierung hat? Oder etwas anderes?
Cwir printf("%f",x)für a floatund printf("%lf",x)für a verwendet double. Wann haben sich die Dinge geändert? Und wie würde man explizit ein (einzelnes) drucken float- printf("%hf",x)??
%lfin printf ist das gleiche wie %f. Ein floatArgument in einer Variablen wird doublevom Compiler in ein Argument konvertiert , genau wie ein Argument shortin ein int.
4.4e10einedoubleKonstante ist,floatin die bei der Initialisierung von konvertiert wird, diecjedoch beibehalten wird,doublewenn sie an übergeben wirdprintf. Möglicherweise möchten Sie jedoch auch wissen, dass das Hinzufügen einesfSuffixes einefloatKonstante darstellt: Beim Drucken4.4e10fwird derselbe Wert angezeigt, der sich aus der Initialisierungcauf ergibt4.4e10f. Die Unterscheidung vonfloatKonstanten vondoubleKonstanten kann wichtig sein, um Qualitätsarbeiten mit Gleitkomma-Arithmetik durchzuführen.