Hättest Du mal die Warnings gelesen, die Dir der Compiler auspuckt, da
steht die Lösung:
1 | $ gcc -Wall printf-test.c -o printf-test
|
2 | printf-test.c: In function ‘main’:
|
3 | printf-test.c:10: warning: format ‘%f’ expects type ‘double’, but argument 2 has type ‘int’
|
Das Verhalten von printf ist dadurch dadort undefiniert, da könnte
genausogut Grützewütze bei rauskommen. Wenn man aber - die Warnung
behebend - den Code auf
1 | printf("%f\n", (double)var);
|
ändert, dann kommt auch die erwartete Ausgabe
1 | 2345.000000
|
2 | 6.000000
|
3 | 6
|
HTH und HF und Du hast hoffentlich was daraus gelernt [1] :-)
[1] Lerninhalt: -Wall regelt, der Compiler meckert fast immer Zurecht
und gibt manchmal sogar die richtige Fehlerstelle mit an ;-)