Problem bei meinem einfach Taschenrechen
-
Hey Leute,
ich programmiere erst seit wenigen Tag in C und ich komme jetzt nicht weiter. Habe generell keinerlei Erfahrung damit.
Ich möchte einfach nur zwei Kommazahlen miteinandere verrechnen... Aber als Ergebnis kommt immer 0.0000 raus.#include <stdio.h>
#include <stdlib.h>int main()
{
double zahl1, zahl2, ergebnis;
printf("Geben Sie die erste Zahl ein: \n");
scanf("%lf", &zahl1);
printf("Geben Sie die zweite Zahl ein: \n");
scanf("%lf", &zahl2);
ergebnis = zahl1 * zahl2;
printf("Das Ergebnis beträgt %lf\n", ergebnis);
return 0;
}
Das ist mein Quelltext.
Vielen Dank schonmal!
-
...
-
Inwiefern nicht? Funktioniert das bei Ihnen?
-
Spekulation: Du hast die Zahlen mit einem Komma statt einem Punkt eingegeben.
Der Formatspezifizierer für double ist übrigens %f. printf und scanf sehen sich zwar ähnlich, haben aber nicht die gleichen Formatstrings! Bei %lf wird das l einfach ignoriert.
-
Vielen Dank!
Lag an dem %lf und an dem double, mit float funktionert es.
-
Das double sollte bleiben.
-
Wenn ich double benutze dann beträgt das Ergebnis wieder 0.000
-
Auch wenn du bei printf nur %f nimmst?
Welchen Compiler/IDE (Name, Version) auf welchem Betriebssystem benutzt du denn?
-
Funktioniert.
Muss ich bei float immer %f nutzen? Und bei double %f bei printf und bei scanf %lf?
-
Ja.
Ok, du kannst die natürlich noch anpassen für Vor- und Nachkommastellen.
Bei der Übergabe von float-Werten an printf werden diese automatisch in double gewandelt. Das liegt an der variablen Parameteranzahl von printf.
Somit gibt es da keinen Unterschied.printf("Das Produkt von %f und %f beträgt %f\n", zahl1, zahl2, ergebnis);
geht ja auch.
Bei scanf ist das anders.