Kapitel Einführung
Dieses Kapitel baut auf den Konzepten aus der Lektion 1.9 -- Einführung in Literale und Operatoren auf. Eine kurze Überprüfung folgt:
Eine Operation ist ein mathematischer Prozess, der null oder mehr Eingabewerte (genannt Operand) umfasst und einen neuen Wert (genannt Ausgabewert) erzeugt. Die spezifische auszuführende Operation wird durch ein Konstrukt (typischerweise ein Symbol oder ein Paar von Symbolen) bezeichnet, das als Operator bezeichnet wird.
Zum Beispiel lernen wir als Kinder alle, dass 2 + 3
gleich 5
ist. In diesem Fall sind die Literale 2
und 3
die Operanden, und das Symbol +
ist der Operator, der uns sagt, dass wir die mathematische Addition auf die Operanden anwenden sollen, um den neuen Wert 5
zu erzeugen. Da hier nur ein Operator verwendet wird, ist das einfach.
In diesem Kapitel werden wir Themen im Zusammenhang mit Operatoren besprechen und viele der gängigen Operatoren erkunden, die C++ unterstützt.
Bewertung von zusammengesetzten Ausdrücken
Jetzt wollen wir einen zusammengesetzten Ausdruck betrachten, wie 4 + 2 * 3
. Sollte dieser als (4 + 2) * 3
gruppiert werden, was zu 18
evaluiert, oder 4 + (2 * 3)
, was zu 10
evaluiert? Nach den normalen mathematischen Vorrangregeln (die besagen, dass Multiplikation vor Addition gelöst wird), wissen wir, dass der obige Ausdruck als 4 + (2 * 3)
gruppiert werden sollte, um den Wert 10
zu erzeugen. Aber wie weiß der Compiler das?
Um einen Ausdruck auszuwerten, muss der Compiler zwei Dinge tun:
- Zur Compile-Zeit muss der Compiler den Ausdruck analysieren und bestimmen, wie Operanden mit Operatoren gruppiert sind. Dies geschieht über die Regeln für Präzedenz und Assoziativität, die wir gleich besprechen werden.
- Zur Compile-Zeit oder zur Laufzeit werden die Operanden ausgewertet und Operationen ausgeführt, um ein Ergebnis zu erzeugen.
Operatorpriorität
Um beim Parsen eines zusammengesetzten Ausdrucks zu helfen, wird jedem Operator ein Vorrangniveau zugewiesen. Operatoren mit einem höheren Vorrang-Niveau werden zuerst mit Operanden gruppiert.