myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Warum werden Anweisungen zuerst ausgeführt und dann zugewiesen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Warum werden Anweisungen zuerst ausgeführt und dann zugewiesen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
nytrec nytrec ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.03.2017
Beiträge: 37


nytrec ist offline

Warum werden Anweisungen zuerst ausgeführt und dann zugewiesen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo ihr Lieben.

Ich habe folgenden Code:

C#-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:

C#-Code:
            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.
04.12.2018 18:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 989
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

hm - du wirkst ziemlich desorientiert :/

Naja - rein logisch betrachtet:

C#-Code:
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:

Code:
1:
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
05.12.2018 07:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
nytrec nytrec ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.03.2017
Beiträge: 37

Themenstarter Thema begonnen von nytrec

nytrec ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
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!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von nytrec am 05.12.2018 12:59.

05.12.2018 12:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 989
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

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

LG und Viel Erfolg noch ;)
05.12.2018 13:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Coffeebean Coffeebean ist männlich
myCSharp.de-Team

avatar-3295.gif


Dabei seit: 25.08.2011
Beiträge: 2.187
Entwicklungsumgebung: VS 2005-2017, VS Code
Herkunft: Deutschland/Schweiz


Coffeebean ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:

Code:
1:
x = 1 + (1 - 4)

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

Code:
1:
gepumpt = andererBehaelter.Aufnehmen(fuellstand);

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

Das gleiche bei

Code:
1:
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
05.12.2018 13:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
nytrec nytrec ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.03.2017
Beiträge: 37

Themenstarter Thema begonnen von nytrec

nytrec ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

Habs halt so aufgefasst, sry! ^^

Zitat:
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! :P


mycsharp.de  Moderationshinweis von Coffeebean (05.12.2018 14:02):

Bitte keine Full Quotes  [Hinweis] Wie poste ich richtig?
 
05.12.2018 13:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pinki
myCSharp.de-Mitglied

avatar-4072.jpg


Dabei seit: 24.08.2008
Beiträge: 675
Herkunft: OWL


pinki ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Coffeebean:
Das gleiche bei

Code:
1:
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:

C#-Code:
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.
05.12.2018 14:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 13.12.2019 08:51