C - %Lf für long double funktioniert nicht
-
Hallo,
bei mir funktioniert
auto float f = 1.1F ; auto double d = 1.1 ; auto long double ld = 1.1L ; printf ( "%f\n" , f ) ; printf ( "%lf\n" , d ) ; printf ( "%Lf\n" , ld ) ;
nicht. Bei long double kommt 0.000000 raus.
(bei mir funktioniert unter andererm auch &llu nicht für unsigned long long).
Ich kenn mich leider mit Compiler nicht gut aus. Wie kann das lösen?
und noch eine kleine Frage gibt er wenn man keine Genauigkeit also %.5F oder so macht immer automatisch 6 nachkommstellen aus?
Danke,
James
-
@JamesNguyen sagte in C - %Lf für long double funktioniert nicht:
Ich kenn mich leider mit Compiler nicht gut aus. Wie kann das lösen?
RTFM
Welchen Compiler auf welchem Betriebssystem benutzt du?
Es gibt da ein Kombination von gcc und Windows, wo die Library %Lf nicht kennt, aber einen anderen Formatspecifier dafür hat.und noch eine kleine Frage gibt er wenn man keine Genauigkeit also %.5F oder so macht immer automatisch 6 nachkommstellen aus?
Ich kenn das nicht anders, habe aber im C-Standard noch nicht danach gesucht.
-
@JamesNguyen sagte in C - %Lf für long double funktioniert nicht:
printf ( "%f\n" , f ) ;
printf ( "%lf\n" , d ) ;printf
kennt eigentlich kein %lf
dennfloat
wird (bei Funktionen mit variablen Argumenten) zudouble
erweitert. Daher ist %f für beide.Da das aber so ziemlich jeder falsch macht, wurde das %lf auch akzeptiert und hat sich somit erst recht durchgesetzt.
-
ah ok dann benutz ich von nun an %f auch für double
Compiler-Satz:
TDM-GCC 4.9.2 64-bit Release
Computer:
https://s12.directupload.net/images/210227/q2ur875f.png
-
@JamesNguyen sagte in C - %Lf für long double funktioniert nicht:
TDM-GCC 4.9.2 64-bit Release
Aktuell ist seit einem Jahr 9.2.0
vielleicht hat sich in der Zwischenzeit ja was verbessert.
-
@JamesNguyen sagte in C - %Lf für long double funktioniert nicht:
ah ok dann benutz ich von nun an %f auch für double
Nochmal zur Klarstellung: das gilt für
printf
scanf
ist eine ganz andere Funktion, auch wenn die Formatspecifier ähnlich ausseheb