• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Supersimpler C-Taschenrechner tuts nicht

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
Hi,

ich eigne mir gerade C an (auch durch Informatik an der Schule) und wollte jetzt mal eine einfache Addition zweier Integer, die der Benutzer eingibt, ausgeben. Leider wird die dritte Variable, die das Ergebnis darstellen soll, immer 0.

Das ist mein Code

Code:
#include <stdio.h>

int main()
{
	int n1, n2, n3;
	
	n3 = n1 + n2;
	
	printf("Bitte geben Sie zwei Summanden ein\n\n\t");
	scanf("%i %i",&n1, &n2);
	printf("Die Summe aus %i und %i ist = %i\n",n1,n2,n3);
	return 0;
}

Habe ich es mir zu einfach gemacht? Bei Ergänzungen/Korrekturen bitte immer erläutern!

Herzlichen Dank
Cologne
 
du hast die addition der beiden variablen gemacht, bevor du die zu addierenden zahlen eingelesen hast!
richtiger wäre


printf("Bitte geben Sie zwei Summanden ein\n\n\t");
scanf("%i %i",&n1, &n2);
n3 = n1 + n2;
printf("Die Summe aus %i und %i ist = %i\n",n1,n2,n3);

vor dem scanf ist ja in den variablen n1 und n2 noch nix enthalten -> es kommt immer 0 heraus
 
Aha, demnach ist eine Definition der Variablen nicht nur direkt nach der Deklarierung möglich. Das wollte ich eh noch wissen. Sehr gut. Gleich mal austesten...
*2 Minuten später* Sehr schön, es klappt. Danke nochmal.
 
Aha, demnach ist eine Definition der Variablen nicht nur direkt nach der Deklarierung möglich. Das wollte ich eh noch wissen. Sehr gut. Gleich mal austesten...
*2 Minuten später* Sehr schön, es klappt. Danke nochmal.

"n3 = n2 + n1" ist keine Definition, sondern eine Zuweisung. Du stellst dir das offenkundig so vor, dass n3 stets die Summe aus n2 und n1 trägt, also wie in der Mathematik. Dies ist falsch. n3 bekommt den Wert, der sich im Zeitpunkt der Zuweisung aus der Addition von n2 und n1 ergibt. Ändern sich später n2 oder n1, ändert sich n3 nicht.

Einige Programmiersprachen lehnen daher diese im mathematischen Sinne falsche Semantik ab und führen einen eigenen Zuweisungsoperator ein, Pascal etwa mit "n3 := n2 + n1".