Was ist C -Operator -Vorrang und Assoziativität

Was ist C -Operator -Vorrang und Assoziativität
Operatoren werden häufig verwendet, um verschiedene arithmetische und logische Operationen in C durchzuführen. Die C -Programmiersprache folgt einer bestimmten Reihenfolge, die als bekannt ist Vorrang Und Assoziativität die Reihenfolge der Operationen während der Ausführung zu bestimmen. Die Regeln von Vorrang Und Assoziativität Helfen Sie beim Schreiben fehlerfreier Code und erhöhen Sie die Code-Lesbarkeit.

Dieser Artikel bietet ein umfassendes Tutorial, um Sie beim Erlernen der Assoziativität und des Bedieners in C zu unterstützen.

Vorrang in c

Vorrang beschreibt die Sequenz, in der mehrere Operatoren bei der Bewertung der Ausdrücke bewertet werden. Zum Beispiel, wenn ein Ausdruck sowohl Additions- als auch Multiplikationsoperatoren hat, die zuerst bewertet werden sollten? Die Antwort ist einfach, C befolgt bestimmte Regeln, um solche Unklarheiten zu lösen, die allgemein bekannt als Vorrang. In c, Vorrang wird in 17 Stufen eingeteilt, die von unartigen Operatoren bis zum ternären bedingten Operator reichen. Die meisten verwendeten Operatoren wie arithmetische Operatoren, relationale Operatoren, logische Operatoren und Bitgewise -Operatoren folgen dem C -Standard Vorrang Protokoll.

Vorrang Regeln bestimmen, welche Betreiber bei der Bewertung der Ausdrücke eine höhere Priorität haben als andere. Verschiedene Arten von Operatoren in der C -Programmiersprache haben unterschiedliche Grade von Vorrang. Zum Beispiel haben unäre Betreiber eine größere Priorität als binäre Betreiber. Das Folgende ist eine Liste von Operatoren, die in aufsteigender Reihenfolge sortiert sind Vorrang:

Operator Bedeutung des Bedieners Assoziativität
()
[]
->
.
Funktioneller Anruf

Array -Elementreferenz

Indirekte Mitgliedsauswahl

Auswahl der direkten Mitglieder

Links nach rechts
!
~
+
-
++
-
&
*
Größe von
(Typ)
Logische Negation

Bitweise (1) ergänzt

Unary Plus

Unary Minus

Zuwachs

Abnahme

Dereferenz (Adresse)

Zeigerreferenz

Gibt die Größe eines Objekts zurück

Typecast (Konvertierung)

Rechts nach links
*
/
%
Multiplizieren

Teilen

Rest

Links nach rechts
+
-
Binary Plus (Addition)

Binär minus (Subtraktion)

Links nach rechts
<<
>>
Linksverschiebung

Rechte Shifttaste

Links nach rechts
<
<=
>
> =
Weniger als

Weniger als oder gleich

Größer als

Größer als oder gleich

Links nach rechts
==
!=
Gleich

Nicht gleichzusetzen mit

Links nach rechts
& Bitweise und Links nach rechts
^ Bitweise exklusiv oder Links nach rechts
| Bitweise oder Links nach rechts
&& Logisch und Links nach rechts
|| Logisch oder Links nach rechts
?: Bedingender Bediener Rechts nach links
=
*=
/=
%=
+=
-=
& =
^=
| =
<<=
>> =
Einfache Aufgabe

Produkt zuweisen

Quotienten zuweisen

Rest zuweisen

Summe zuweisen

Differenz zuweisen

Bitgewise zuweisen und

Bitwise XOR zuweisen

Bitgewise or zuweisen oder

Linke Verschiebung zuweisen

Rechte Verschiebung zuweisen

Rechts nach links
, Ausdrückeabscheider Links nach rechts

Diese Regeln leiten den Compiler, wie Ausdrücke mit mehreren Operatoren im selben Ausdruck bewertet werden können. Der Multiplikationsoperator beispielsweise hat eine größere Vorrang Vorrang Regeln. Daher bewertet der Compiler zunächst den Ausdruck B * c, bevor der Ergebnis A zum Ergebnis hinzufügt.

Schauen wir uns ein Beispiel von an Vorrang durch Code.

#enthalten
int main ()
int a = 43, b = 11, c = 16, d = 31;
int result = ++ a * b-- +c /--d;
printf ("a = %d \ n", a);
printf ("b = %d \ n", b);
printf ("c = %d \ n", c);
printf ("d = %d \ n", d);
printf ("result = %d \ n", Ergebnis);
Rückkehr 0;

Die vier Variablen A, B, C und D werden im obigen Code deklariert, und ihre Anfangswerte sind 43, 11, 16 und 31 entsprechend. Dann wendet es eine Vielzahl von Arithmetik- und Zuordnungsoperatoren auf diese Variablen in einem Ausdruck an. Der Ausdruck erhöht den Wert von A durch die Verwendung des Vorstufemperators ++ A, multipliziert das Ergebnis durch den Post-Decrement-Operator B- und fügt dann das Ergebnis der Dividierung C durch den vorab dekrementierten Wert von D hinzu. (Verwenden des Vorabschaltoperators -d). Das variable Ergebnis wird dann verwendet, um das Gesamtergebnis dieses Ausdrucks zu halten.

Ausgang

Assoziativität in c

Assoziativität bezieht sich auf die Reihenfolge, in der die Operatoren während eines Ausdrucks mit gleichem Vorrang bewertet werden. Links nach rechts und rechts nach links Assoziativität sind die beiden Formen der Assoziativität in c. Wenn zwei Operatoren dasselbe haben Vorrang, Sie werden von links nach rechts gemäß dem Konzept von links nach rechts bewertet Assoziativität. Wenn jedoch die gleiche Vorrangung beobachtet wird, werden die Operatoren nach rechts nach links von rechts nach links bewertet Assoziativität.

Zum Beispiel hat der ++ Increment-Operator Recht nach links Assoziativität, was bedeutet das Inkrement Operator wird nach der Variablen bewertet. Während die logische und Operator hat einen links nach rechts Assoziativität, Dies bedeutet, dass der Bediener von links nach rechts bewertet wird.

#enthalten
int main ()
int a = 6, b = 3, c = 2;
int result = a * b / c;
printf ("result = %d \ n", Ergebnis);
Rückkehr 0;

Die drei Variablen A, B und C werden in diesem Code deklariert und werden auf 6, 3 bzw. 2 initialisiert. Anschließend wendet es in einem Ausdruck Multiplikations- und Abteilungsoperationen auf diese Variablen an. Multiplikation und Abteilung werden basierend auf ihrem von links nach rechts in C eingestuft Assoziativität Da haben sie das gleiche Vorrangniveau. Dies zeigt an, dass der Abteilungsvorgang an erster Stelle steht, gefolgt von dem Multiplikationsvorgang bei der Bewertung des Ausdrucks A * b / c.

Ausgang

Abschluss

Vorrang Und Assoziativität sind entscheidende Konzepte in der C -Programmierung, die dazu beitragen. Betreiber mit den höchsten Vorrang Niveau werden zuerst bewertet und Assoziativität Regeln ermitteln die Reihenfolge, wenn mehrere Operatoren mit gleichem Vorrang verwendet werden. Verständnis Vorrang Und Assoziativität ist bei der Gestaltung komplexer Programme von entscheidender Bedeutung und erstellt sauberere und effizientere Code mit weniger Fehlern.