Laden...

Warum werden Anweisungen zuerst ausgeführt und dann zugewiesen?

Erstellt von nytrec vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.081 Views
N
nytrec Themenstarter:in
37 Beiträge seit 2017
vor 5 Jahren
Warum werden Anweisungen zuerst ausgeführt und dann zugewiesen?

Hallo ihr Lieben.

Ich habe folgenden Code:

        public void Abgeben(int menge)
        {
            int gepumpt;
            if (menge > fuellstand)
                gepumpt = andererBehaelter.Aufnehmen(fuellstand);
            else
                gepumpt = andererBehaelter.Aufnehmen(menge);
            fuellstand = fuellstand - gepumpt;
        }
    }

Mir ist nicht so ganz klar, warum die Methode "Aufnehmen" aufgerufen wird, wenn wir doch nur diese Anweisung in "gepumpt" zuweisen? Das gleiche Verständnis Problem habe ich hier auch:

            int zahl = 5, ausgabe = 0;

            Console.WriteLine("Die aktuelle Zahl ist {0}", zahl);
            zahl++;
            Console.WriteLine("Die aktuelle Zahl ist {0}", zahl);
            ausgabe = zahl++;
            Console.WriteLine("Die aktuelle Zahl ist {0}", ausgabe);
            Console.WriteLine("Die aktuelle Zahl ist {0}", zahl);

Hier weisen wir zahl++ in ausgabe zu.

Bei Console.WriteLine("Die aktuelle Zahl ist {0}", ausgabe); gibt er 6 aus und danach bei Console.WriteLine("Die aktuelle Zahl ist {0}", zahl); die Zahl 7.

Warum ist das so? Warum werden diese Anweisungen zuerst ausgeführt und dann zugewiesen? In meinem Studienheft wird das gar nicht erklärt.

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

hm - du wirkst ziemlich desorientiert 😕

Naja - rein logisch betrachtet:

gepumpt = andererBehaelter.Aufnehmen(fuellstand);

Du hast hier eine Anweisung die Folgendes besagt:
Weise das Ergebnis der Methode "Aufnehmen" der Instanz "andererBehälter" dem Feld "gepumpt" zu.

Das Thema ist dabei - die Methode "Aufnehmen" produziert ein Ergebnis, dass du dem Feld "gepumpt" zuweist. Es ist somit natürlich erforderlich, dass eben jene Methode ausgeführt wird, bevor eine Zuweisung überhaupt möglich ist.

Denk dir einfach es wäre eine Gleichung:

x = 1 +  1

Es wäre ja auch schlicht falsch bei dieser Formel eine Zuweisung von 1 an Stelle von 2 zu erwarten. Du musst auch hier erst mal 1 + 1 ausrechnen um x zu bestimmen.

LG

N
nytrec Themenstarter:in
37 Beiträge seit 2017
vor 5 Jahren

hm - du wirkst ziemlich desorientiert 😕

Wie kommst du auf sowas? Was kann ich dafür, wenn mir eine Information vorenthalten wird? Ich bin ein Anfänger und kein Profi!

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

ich glaub das hast du in den falschen Hals bekommen - war jedenfalls nicht böse gemeint.

LG und Viel Erfolg noch 😉

2.207 Beiträge seit 2011
vor 5 Jahren

Hallo nytrec,

bitte nimm das nicht persönlich, ich bin mir sicher Taipi88 hatte keine verletzende oder beleidigende Absicht.

Dein Problem ist aber nichtmal programmiertechnischer Herkunft um ehrlich zu sein. Das ist mehr Mathematik.

Willst du eine Variable bestimmen musst du sie berechnen.

Beispiel:

x = 1 + (1 - 4)

Errechnet auch erst in den Klammern, danach den Rest und weist es dann zu. Genau das passiert bei

gepumpt = andererBehaelter.Aufnehmen(fuellstand);

aber auch. Es wird alles auf der rechten Seite ausgeführt und dann zugewiesen.

Das gleiche bei

ausgabe = zahl++;

zahl++ is äquivalent zu zahl = zahl+1. Somit wird das erst ausgerechnet und dann ausgabe zugewiesen.

Ich hatte zugegeben auch grosse Probleme einen Titel für den Thread zu finden 😉

Falls du einen guten Einstieg in C# suchst, kann ich dir [FAQ] Wie finde ich den Einstieg in C#? empfehlen.

Gruss

Coffeebean

N
nytrec Themenstarter:in
37 Beiträge seit 2017
vor 5 Jahren

ich glaub das hast du in den falschen Hals bekommen - war jedenfalls nicht böse gemeint.

Habs halt so aufgefasst, sry! ^^

Dein Problem ist aber nichtmal programmiertechnischer Herkunft um ehrlich zu sein. Das ist mehr Mathematik.

Vielen Dank für deine Antwort Coffee! 😃

Vielen Dank für diese ausführliche Antwort! Jetzt weiß ich, warum man bei dem Beruf mehr oder weniger Mathe braucht! 😛

Hinweis von Coffeebean vor 5 Jahren

Bitte keine Full Quotes [Hinweis] Wie poste ich richtig?

709 Beiträge seit 2008
vor 5 Jahren

Das gleiche bei

ausgabe = zahl++;  

zahl++ is äquivalent zu zahl = zahl+1. Somit wird das erst ausgerechnet und dann ausgabe zugewiesen.

Hierbei sollte noch auf den Unterschied von zahl++ und ++zahl aufmerksam gemacht werden.

@nytec
In folgendem Beispiel kann man sich das ansehen:

int zahl = 0;
Console.WriteLine(zahl);    // 0
Console.WriteLine(zahl++);  // 0
Console.WriteLine(zahl);    // 1
Console.WriteLine(++zahl);  // 2
Console.WriteLine(zahl);    // 2

zahl++ gibt den Wert von zahl zurück und erhöht dann um 1, während ++zahl erst um 1 erhöht und dann den Wert von zahl zurück gibt.