Operatorvorrang und Assoziativität in C++

Muhammad Husnain 15 Februar 2024
  1. Operatoren in C++
  2. Operatorvorrang und Assoziativität in C++
  3. Implizite Typkonvertierung in Ausdrücken in C++
Operatorvorrang und Assoziativität 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:

  1. Arithmetischer Operator
  2. Zuweisungsoperator
  3. Vergleichsoperator
  4. 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:

Vorrang der Operatoren

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:

Operatorenassoziativität

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.

Muhammad Husnain avatar Muhammad Husnain avatar

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

Verwandter Artikel - C++ Operator