Visual C# 2012 Grundkurs

Reihenfolge von Operatoren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die unterschiedlichen Operatoren werden innerhalb von C# nach einer bestimmten Reihenfolge ausgeführt. Die Reihenfolge unterliegt einer strikt nach Logik vordefinierten Regel.

Transkript

In diesem Abschnitt widmen wir uns noch einmal den Operatoren, und zwar hinsichtlich ihrer Vorrangfolge und der Reihenfolge ihrer Auswertung. Das wollen wir ganz kurz halten. Ich habe hier zwei Werte, "i" und "j". Wir können sehen: j i. i = 10 und j = 11. Und jetzt kann ich so etwas schreiben wie: bool v = i < j || j 0; Jetzt ist für jedermann klar, wie das ausgewertet wird. Es wird also zuerst einmal das hier ausgewertet, und dann wird das hier ausgewertet, und dann wird es verodert. Das erscheint uns als die natürliche Reihenfolge der Dinge. Aber so natürlich ist das eigentlich gar nicht. Diese Reihenfolge der Dinge, die ist sorgfältig abgewogen worden und sorgfältig definiert worden. Und so sieht es eben so aus, dass der Assignment-Operator überhaupt, sagen wir mal, es ist ja nicht nur "=", sondern das sind ja auch diese "* =", oder "/ =" etc. also all diese Operatoren, die eine Zuweisung machen können, die haben sozusagen die geringste Rangfolge. Und das bedeutet, dass vorher alle anderen Operatoren ausgeführt werden, und das, was dann daraus resultiert, das wird zugewiesen. Und entsprechend ist auch eine Reihenfolge festgelegt für die Grundrechnungsarten. Also wenn ich jetzt schreibe: int s  = i + j 5*; dann ist klar: Die Multiplikation hat einfach Vorrang, die wird vorher ausgeführt, und das Resultat wird dann dem "i" zugeschlagen. Das versteht man unter der Operator-Reihenfolge, und die ist in C# so definiert, dass sie sich an sehr vielen Stellen sehr natürlich in das Programmgefüge einfügt. An den Stellen, an denen man das ändern möchte, da geht man einfach her und klammert. Wenn ich jetzt zum Beispiel will, dass diese Operation hier vor der Multiplikation ausgeführt wird, dann klammere ich sie, und siehe da, sie wird dann halt vorher ausgeführt. Aber ich denke das ist so einigermaßen klar. Dann ist es so, vor diesen Operatoren... Nehmen wir mal noch eine Variable int k = 9; und wenn ich jetzt diesen Inkrement-Operator hernehme, hätte der Vorrang vor diesem "*". Das sind also alles Dinge, die uns als sehr normal und sehr natürlich erscheinen. Entsprechend ist es so, wenn ich ein Array definiere, das mache ich gleich nochmal, und ich hätte jetzt hier zum Beispiel ein arr [2]; jetzt ist es natürlich schon ein bisschen schwieriger: Wird das zuerst ausgewertet? Nein, macht eigentlich keinen Sinn, oder? Es muss eigentlich zuerst das hier ausgewertet werden. Dann erhalte ich einen Wert, und den kann ich jetzt inkrementieren. Und genauso ist es auch. Also, in den meisten Fällen werden uns die Operatoren von C# nicht im Weg stehen, sondern sie sind genau so definiert, wie wir es eigentlich erwarten. Und wie gesagt: Gerade hier bei der Multiplikation und bei der Addition, bzw. bei Subtraktion und Division, bei den vier Grundrechnungsarten, da ist es so, dass die Multiplikation und die Division vor der Addition liegen und dass wir dieses Verhalten durch Klammern ändern können. So ist es entsprechend bei den logischen Operatoren, dem "und" und dem "oder", da haben wir auch so Vorranggeschichten, und die können wir auch klammern. Und das Gleiche finden wir dann wieder bei den konditionalen Sachen, weil das "und" dann vor dem "oder" steht. Also das "und" wird vorrangig ausgeführt, vor dem "oder". Das können wir durch Klammern abändern. Soweit zur Vorrangfolge der Operatoren und jetzt hätten wir noch so ein Konstrukt: Das ist eigentlich fast ein bisschen zu trivial, stelle ich gerade fest. Also mache ich ein bisschen was anderes: "Class MyMath". Und da sage ich jetzt: "int f(int i) { return 2; } was ich da jetzt zurückgebe ist nicht so wichtig. Ich möchte einfach ein paar Funktionen hier haben. Also habe ich einfach ein "f", ein "g" und ein "h". Nehmen wir die nochmal raus. Also, ich habe hier drei Funktionen. Jetzt brauche ich noch int i = 4; und jetzt kann ich hier so etwas schreiben wie: "f". braucht natürlich noch Objekt vom Typ "Math". MyMath math = new MyMath (); Und jetzt sehe ich gerade: Funktionen sind nicht zugreifbar. Also machen wir sie nochmal "public"; Und jetzt können wir schreiben: int j = math.f (i) + math.g (i) + math.h(); Ganz genau. Und wir wissen ja jetzt nicht, was in dieser Klasse "Math" passiert, wenn diese Operationen ausgeführt werden. Der Aufruf dieser Funktion "f" kann den Status von Math verändern und der Aufruf von "g" kann den Status wieder verändern; der Aufruf von "h" kann es wieder verändern. Und jetzt spielt es schon eine Rolle ob dieser Ausdruck zuerst ausgeführt wird, und dann der hier. Oder ob zuerst dieser Ausdruck ausgeführt wird und dann eben die Plus-Operation mit dem Rest des Ausdrucks stattfindet. Da gibt es bei C# eine klare Regel. Und diese Regel bedeutet, dass alle Operatoren, außer der Assignment-Operator, von links zusammenfassen. Das will heißen, der Ausdruck ohne Klammern wäre äquivalent zu dem Ausdruck, wie ich ihn hier stehen habe. Und wenn man das anders haben will, dann muss man wieder Klammern setzen. Und jetzt gibt es noch die andere Geschichte: int k =...moment mal. int k; int l; int m; Genau, und jetzt kann ich int n = k = l = m; schreiben. Also ich kann Assignment-Operatoren aneinanderhängen, jeweils mit diesem "=" Operator. Auch hier stellt sich nun die Frage: Wie werden die zusammengefasst? Da würde es relativ wenig Sinn machen, von links zusammenzufassen. Die Lesereihenfolge wäre dann unnatürlich. Und deswegen ist es die einzige Ausnahme: Die fasst man von rechts zusammen. Also zunächst einmal wird diese Zuweisung vorgenommen, dann ist "l" initialisiert. Und dann wird diese Zuweisung vorgenommen, und dann wird diese Zuweisung vorgenommen. Und am Ende hat "n" eben den Wert "4". Das war der Abschnitt zur Vorrangreihenfolge und Zusammenfassung der Operatoren.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!