Stannis
Lieutenant
- Registriert
- Juli 2011
- Beiträge
- 555
Gemäß diesem Wikibook sollten das die Formatierungen für scanf und printf sein. So weit so wundervoll.
Warum ist das bei mir (Ubuntu, gcc) anders?
Ich will Wurzeln ziehen, habe zuerst mit floats und der Formatierung %f gearbeitet, alles wunderbar. Dann wollte ich auf double, der Genauigkeit wegen, umsteigen.
%f, %e und nichts aus diesem Wikibook funktioniert, bis Ich mir %lf (long float) ausgedacht habe, was funktioniert hat.
%e und %f scheinen auch noch beide für float zuständig zu sein
Woher weiß Ich denn überhaupt, was Sache ist, wo finde Ich eine richtige Liste? Bei long double ists vermutlich wieder was anderes.
Hängt das damit zusammen, dass die Speichergrößen für Variablen (32 oder 64 usw. Bit) auf allen Systemen anders sein können?
Warum ist das bei mir (Ubuntu, gcc) anders?
Ich will Wurzeln ziehen, habe zuerst mit floats und der Formatierung %f gearbeitet, alles wunderbar. Dann wollte ich auf double, der Genauigkeit wegen, umsteigen.
%f, %e und nichts aus diesem Wikibook funktioniert, bis Ich mir %lf (long float) ausgedacht habe, was funktioniert hat.
%e und %f scheinen auch noch beide für float zuständig zu sein
Woher weiß Ich denn überhaupt, was Sache ist, wo finde Ich eine richtige Liste? Bei long double ists vermutlich wieder was anderes.
Hängt das damit zusammen, dass die Speichergrößen für Variablen (32 oder 64 usw. Bit) auf allen Systemen anders sein können?
Code:
imperator@imperator-PC:~/Programmieren/C$ gcc wurzel.c
wurzel.c: In function ‘main’:
wurzel.c:9:2: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%f", &eingabe);
^
imperator@imperator-PC:~/Programmieren/C$ gcc wurzel.c
wurzel.c: In function ‘main’:
wurzel.c:9:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%d", &eingabe);
^
wurzel.c:11:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=]
printf("%d", ausgabe);
^
imperator@imperator-PC:~/Programmieren/C$ gcc wurzel.c
wurzel.c: In function ‘main’:
wurzel.c:9:2: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%f", &eingabe);
^
imperator@imperator-PC:~/Programmieren/C$ gcc wurzel.c
wurzel.c: In function ‘main’:
wurzel.c:9:2: warning: format ‘%e’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%e", &eingabe);
^
imperator@imperator-PC:~/Programmieren/C$ gcc wurzel.c
wurzel.c: In function ‘main’:
wurzel.c:9:2: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%f", &eingabe);
^
imperator@imperator-PC:~/Programmieren/C$ gcc wurzel.c
wurzel.c: In function ‘main’:
wurzel.c:9:2: warning: format ‘%ld’ expects argument of type ‘long int *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%ld", &eingabe);
^
wurzel.c:11:2: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘double’ [-Wformat=]
printf("%ld", ausgabe);
^
imperator@imperator-PC:~/Programmieren/C$ gcc wurzel.c
imperator@imperator-PC:~/Programmieren/C$ ./a.out
Quadratwurzel aus (>1): 101
10.049876