> Es ist nicht "LF" gemeint sondern ".EinsF", sprich auf 1 Nachkommastelle
> gerundet.
Ah. Sorry.
Ist mit dem hier verwendetem Font nicht unterscheidbar.
Da sollten wir mal mit Andi drüber reden.
> Warum geht die Typkonvertierung nur mit double? Double braucht ja
> doppelt so viel Speicherplatz wie float :-(
Jetzt ist alles klar.
Die Antwort ist:
Weil printf() eine variadische Funktion ist.
D.h. es gibt keinen Prototypen, der dem Compiler sagen
würde, wie die Datentypen (mit Ausnahme des ersten
Argumentes, dem Formatstring) aussehen. Daher gelten
hier Standardregeln. Und eine dieser Standardregeln besagt,
dass ein float immer als double übergeben wird. printf()
kriegt also niemals einen float zu Gesicht, immer nur
double. printf kriegt übrigens auch niemals einen char
zu Gesicht, weil eben besagte Regeln festlegen, dass ein
char implizit zu einem int hochgecastet ('promoted')
wird. Daher ist zb auch
printf( "%c", 23 );
kein Problem. 23 ist ein int, und %c holt sich einen int
aus der Argumentliste. Wenn allerdings diese Promotingregel
nicht wäre, dann hätte man hier:
printf( "%c", 'a' );
dann effektiv ein Problem. %c holt sich einen int, als Argument
wäre aber nur ein char da. Durch die Promotingregel, dass ein
char als int übergeben wird, bügelt sich das alles wieder aus.