Wenn Du weitere Fragen zum Tutorial von tut.at hast, schreibe bitte im Betreff "tutorial.at" davor, da wir hier eigene Tutorials haben, die wir anhand von Fragen verbessern und das dann schnell zu Verwechselungen führt. Auf die Seiten von tut.at haben wir keinen Einfluss.
Ansonsten willkommen auf proggen.org
mettalqueen hat geschrieben:ergebnis = 3 + 3 * 3;
Was denken Sie, ist das Ergebnis? 18 oder 12? Schreiben Sie ein kleines C-Programm, das das Ergebnis ausgibt.[/b]
ich habe versucht, das folgendermaßen zu lösen.
Code: Alles auswählen
#include <stdio.h>
int main()
{
int summand1, summand2, faktor;
printf ("Geben sie 3 + 3 * 3 ein");
scanf ("%d %d %d", &summand1, &summand2, &faktor);
printf ("%d + %d *%d = %d\n", summand1, summand2, faktor, summand1 + summand2 * faktor);
return 0;
}
Okay, mehrere Dinge sehe ich hier:
Zum einen: Wieso verwendest Du scanf - die Funktion ist vergleichsweise gefährlich, weil sie leicht falsch zu bedienen ist. Gib doch einfach die Rechenaufgabe direkt in den Quelltext ein:
Code: Alles auswählen
int ergebnis = 3 + 3 * 3;
printf ("%d + %d *%d = %d\n", 3, 3, 3, ergebnis );
Der Autor von tut.at möchte vermutlich damit zeigen, dass die Multiplikation vor der Addition ausgeführt wird und das sollte durch diese Zeilen auch herauskommen.
Zweitens: Du benutzt scanf. Die Funktion ist immernoch vergleichsweise gefährlich, weil sie leicht falsch zu bedienen ist und das passiert hier auch:
Code: Alles auswählen
printf ("Geben sie 3 + 3 * 3 ein");
scanf ("%d %d %d", &summand1, &summand2, &faktor);
scanf erwartet hier drei Integer, die mit Leerzeichen getrennt sind. Diese Integer werden in die Variablen summand1, summand2 und faktor gespeichert. Du gibst aber "3 + 3 * 3" ein und das scheint scanf zu verwirren. So bekommst Du in summand1 die "3", in summand2 die "+3" (plus ist hier das Vorzeichen!) und dann kommt "*3", was sich nicht als Integer ausdrücken lässt. Also wird die Variable faktor nicht initialisiert. Was immer vorher in Faktor drinstand bleibt unverändert - und vorher stand halt eine willkürliche, sehr große Zahl drin.
Und damit wissen wir nun 3 mal willkürliche große Zahl plus 3 ist 12600579.
Gib in Dein Programm mal "3 3 3" ein, dann sollte es laufen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.