Operatorvorrang und Assoziativität in C++
- Operatoren in C++
- Operatorvorrang und Assoziativität in C++
- Implizite Typkonvertierung in Ausdrücken in C++
Dieser Artikel behandelt die Operatoren in C++ und wie sie ausgewertet werden, wenn sie in einem Ausdruck verwendet werden. Es gibt bestimmte Regeln für ihre Manipulation, daher werden wir sie uns ansehen, um mehr über die Ausdrucksauswertung mit C++-Operatoren zu erfahren.
Operatoren in C++
Operatoren sind Symbole zum Manipulieren von Variablen und Werten. Beispielsweise werden die Operatoren +
und -
für Addition und Subtraktion verwendet.
In C++ werden Operatoren in 4 Kategorien unterteilt:
- Arithmetischer Operator
- Zuweisungsoperator
- Vergleichsoperator
- Logischer Operator
Rechenzeichen
Diese Operatoren werden verwendet, um verschiedene arithmetische Operationen an einigen Daten durchzuführen. Zum Beispiel wird *
verwendet, um zwei oder mehr Zahlen oder Variablen zu multiplizieren.
Es gibt zahlreiche arithmetische Operatoren, die unten aufgeführt sind:
Operator-Symbol | Beschreibung |
---|---|
+ |
Additionsoperator |
- |
Subtraktionsoperator |
* |
Operator multiplizieren |
/ |
Abteilungsbetreiber |
% |
Moduloperator (Rest nach Divisionsoperation) |
Aufgabenverwalter
Diese Operatoren können einer Variablen einen bestimmten Wert zuweisen; =
ist der Zuweisungsoperator. Betrachten Sie das folgende Beispiel.
int a;
a = 5;
Hier wird a
mit dem Zuweisungsoperator =
der Wert 5
zugewiesen. Es gibt auch andere Zuweisungsoperatoren, die unten aufgeführt sind:
Operator | Äquivalente Erklärung |
---|---|
a += 5 |
a = a +5 |
a -= 5 |
a = a -5 |
ein *= 5 |
a = a*5 |
a /= 5 |
a = a /5 |
ein %= 5 |
a = a%5 |
Vergleichsoperator
Vergleichsoperatoren werden zum Vergleichen von 2 Werten oder Operanden verwendet. Wenn die Relation als wahr bewertet wird, gibt sie den Wert 1
zurück, und wenn sie als falsch bewertet wird, gibt sie 0
zurück.
In C++ werden mehrere Vergleichsoperatoren verwendet:
Operator | Beschreibung |
---|---|
< , > |
Größer als und kleiner als |
<= , >= |
Kleiner als und gleich, größer als und gleich |
== |
Ist gleich |
!= |
Nicht gleichzusetzen mit |
Logische Operatoren
Logische Operatoren können auswerten, ob ein Ausdruck wahr oder falsch ist. Wenn es wahr ist, ist das zurückgegebene Ergebnis 1
; andernfalls 0
.
Es gibt mehrere logische Operatoren, die unten aufgeführt sind:
Betreiber | Beschreibung |
---|---|
&& |
UND-Operator. Dies gibt true zurück, wenn alle Ausdrücke wahr sind. |
` | |
! |
NICHT-Operator. Dies gibt true zurück, wenn der Ausdruck falsch ist. |
Operatorvorrang und Assoziativität in C++
Wenn wir einen Ausdruck mit mehr als einem Operator haben, wird der Ausdruck gemäß der Rangfolge der Operatoren ausgewertet. Priorität definiert die Priorität von Operatoren und welcher Operator zuerst ausgewertet wird.
Betrachten Sie das folgende Beispiel:
a = 3 * 5 / 2 + 3
In diesem Ausdruck wird nun durch die Rangfolge der Operatoren entschieden, welcher Operator zuerst manipuliert wird.
Die Liste der Operatorprioritäten ist in der folgenden Tabelle aufgeführt:
Jetzt können wir sehen, dass bestimmte Operatoren die gleiche Prioritätsstufe haben. Der Ausdruck mit solchen Operatoren mit derselben Prioritätsstufe wird unter Verwendung der Assoziativitätsregel ausgewertet.
Die Assoziativität definiert die Reihenfolge der auszuwertenden Operatoren auf derselben Prioritätsebene. Unten ist die Tabelle, die die Assoziativität von Operatoren beschreibt:
Implizite Typkonvertierung in Ausdrücken in C++
Wenn ein Ausdruck Variablen mit gemischten Typen hat, führt der Compiler automatisch die Typkonvertierung entsprechend der Operation und dem Datentyp der Operanden durch. Betrachten Sie beispielsweise das folgende Code-Snippet:
int a = 2, b = 3, c = 5;
double f = 4.5;
double res = a + b / f + c;
In der letzten Codezeile sehen wir, dass drei Variablen vom Typ int und eine vom Typ double sind. Entsprechend der Operatorpriorität wird /
als erstes ausgewertet; In diesem Ausdruck bedeutet b/f
, dass ein Int durch ein Double dividiert wird, sodass das Ergebnis in Double umgewandelt wird.
Danach wird +
für int und double ausgewertet, das Ergebnis also in double umgewandelt. Daher hat res
einen doppelten Datentyp.
Hier sehen wir, dass das Ergebnis des Ausdrucks immer auf höhere Datentypen hochgestuft wird, die am Ausdruck beteiligt sind.
int + double = > double + double = double int* double =
> double* double = double double* int =
> double* double = double int / double =
> double / double =
double double / int =
> double / double =
double int / int = int
Sie können in den obigen Ausdrücken sehen, wie die Typen bei Ausdrücken mit gemischten Typen zu höheren Datentypen hochgestuft werden.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn