Servus soll nun ein einfaches Rechenprogramm in C schreiben. Nur gibt er mir für c also das Ergebnis immer 0 aus. woran liegt dass er rechnet mir einfach nicht die von mir eingegebenen Zahlen zusammen. Kann mir jemand kurz helfen? #include <stdio.h> #include <stdlib.h> #include <conio.h> #include "Utilities.h" int main(void) { float a, b, c; _gotoxy (5,5); printf ("c=a-4,5*b-b*10.2"); _gotoxy (5,6); printf ("a:"); _gotoxy (8,6); scanf ("%d", &a); //Einlesen der Variable a _clrscr(); _gotoxy (5,5); printf ("c=a-4,5*b-b*10.2"); _gotoxy (5,6); printf ("b:"); _gotoxy (8,6); scanf ("%d", &b); //Einlesen der Variable b _clrscr(); _gotoxy (5,5); printf ("c=a-4,5*b-b*10.2"); c=a-4,5*b-b*10.2; _gotoxy (5,6); printf("c = %d"); //Ausgabe der Variable c while (_kbhit() == 0); return EXIT_SUCCESS; }
was ich vergessen habe kommazahlen werden auch nicht akzepiert obwohl ich float deklariert habe.
was werden denn für Zahlen für a und b eingeben?
> c=a-4,5*b-b*10.2;
sieht mir nicht nach gültigen C code aus.
Max Power schrieb: > scanf ("%d", &a); //Einlesen der Variable a kram mal dein C Buch raus und sieh nach welcher Buchstabe für float wirklich zuständig ist. %d ist es nicht. das ist für int Ich könnte es dir natürlich auch sagen, aber dann lernst du nichts dabei. Insbesondere lernst du nicht, wo die Information findest, wenn du sie das nächste mal brauchst. Immerhin hast du den & richtig. Und das ist schon was (kein Sarkasmus, meine ich ehrlich. Das ist nämlich eine der ersten Fallen für Anfänger) > c=a-4,5*b-b*10.2; Hat Peter schon genannt. Nur soviel: In programmiersprachen hat man einen Dezimalpunkt und kein Dezimalkomma > _gotoxy (5,6); > printf("c = %d"); //Ausgabe der Variable c Aha. Und wo wird da jetzt c tatsächlich ausgegeben, wo kommt da die Variable c vor? Mal ganz abgesehen davon das %d für die Variable c schon wieder falsch ist.
och ne das komme bei 4,5 hab ich total übersehen. bei 10,2 ist der Punkt ja drinn. Hab schon gewusst dass man Punkt und kein Komma verwendet. Den rest schau ich jetzt nochmal nach. Danke schon mal.
alles klar habs gefunden. dass so kleine sachen solch eine wirkung haben verblüfft mich immer wieder.
Max Power schrieb: > alles klar habs gefunden. dass so kleine sachen solch eine wirkung haben > verblüfft mich immer wieder. Wie ich gerne sage: Wenn du eine Programmiersprache brauchst, bei der die Tante mit aufs Klo geht Lulu machen, dann bist du bei C definitiv falsch :-)
> c=a-4,5*b-b*10.2;
mankanninCauchLeerzeichenverwenden,daserhöhtdieLesbarkeitdesCodesungemei
n.
Anmerkung: Muss man bei der angabe von Fließkommanzahlen nicht ein Suffix "f" dranhängen?
1 | float x; |
2 | |
3 | x = 2.2f; |
nein. (Bzw. nur in recht seltenen, eher esoterischen Fällen.)
wieso nicht, sicher kann man. Per default ist 2.2 nämlich von Typ double. Ein float literal kann nur mit 2.2f angegeben werden.
digit schrieb: > wieso nicht, sicher kann man. > Per default ist 2.2 nämlich von Typ double. > Ein float literal kann nur mit 2.2f angegeben werden. Schon. Aber was soll der Compiler denn Esoterisches daraus erzeugen, wenn er den double 2.2 an den float x zuweist? Er wird sicher nicht die double Darstellung von 2.2 erzeugen, die irgendwie in den Prozessor laden lassen, abschneiden und dann an x zuweisen lassen sondern direkt die Binärdarstellung von 2.2 als float nach x speichern lassen. Die einzige Frage, die sich tatsächlich stellt, ist: Warum wird auf einem PC überhaupt mit float gerechnet und nicht gleich mit double. float ist nicht schneller, float bringt nicht mehr Auflösung (ganz im Gegenteil) und hat auf dem PC eigentlich nur Nachteile, wenn man einmal vom geringeren Speicherverbrauch absieht, der hier überhaupt keine Rolle spielt. Aber eigentlich will man float auf einem PC nicht benutzen, wenn man nicht einen sehr, sehr guten Grund dafür hat, weiß was man sich damit einhandelt und auch über das Wissen verfügt, wie man dieses Biest zähmen kann. In allen anderen Fällen benutzt man double.
Matthias schrieb: > Muss man ^^^^ Klaus Wachtler schrieb: > nein. digit schrieb: > wieso nicht, sicher kann man. ^^^^ ja.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.