• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Sprichwörter und Redewendungen sind das Thema unseres Monatswettbewerbes. Nähere Informationen dazu gibt es natürlich auch, und zwar auf dieser Seite ---> Klick

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
 

wwuha

Carola
Registriert
01.05.07
Beiträge
113
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
 

Cologne_Muc

Schöner von Nordhausen
Registriert
15.09.04
Beiträge
318
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.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
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".