Was ist Vorrang und Assoziativität von C-Operatoren?

Was Ist Vorrang Und Assoziativitat Von C Operatoren



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

Dieser Artikel enthält ein umfassendes Tutorial, das Sie beim Erlernen von Assoziativität und Operatorpriorität in C unterstützt.

Operatorvorrang in C

Vorrang des Operators beschreibt die Reihenfolge, in der mehrere Operatoren beim Auswerten von Ausdrücken ausgewertet werden. Wenn ein Ausdruck beispielsweise sowohl Additions- als auch Multiplikationsoperatoren enthält, welcher sollte zuerst ausgewertet werden? Die Antwort ist einfach, C folgt bestimmten Regeln, um solche Mehrdeutigkeiten aufzulösen, allgemein bekannt als Operator Vorrang . In C, Operator Vorrang ist in 17 Ebenen eingeteilt, die von unären Operatoren bis zum ternären Bedingungsoperator reichen. Die meisten verwendeten Operatoren wie arithmetische Operatoren, relationale Operatoren, logische Operatoren und bitweise Operatoren folgen dem C-Standard Operator Vorrang Protokoll.







Vorrang Regeln schreiben vor, welche Operatoren bei der Auswertung von Ausdrücken eine höhere Priorität als andere haben. Mehrere Arten von Operatoren in der Programmiersprache C haben unterschiedliche Grade von Vorrang . Beispielsweise haben unäre Operatoren eine höhere Priorität als binäre Operatoren. Das Folgende ist eine Liste von Operatoren, die in aufsteigender Reihenfolge sortiert sind Vorrang :



Operator Bedeutung von Operator Assoziativität
()
[]
->
.
Funktionsaufruf

Array-Element-Referenz



Indirekte Mitgliederauswahl





Direkte Mitgliederauswahl

Links nach rechts
!
~
+

++

&
*
Größe von
(Typ)
Logische Verneinung

Bitweises (1er) Komplement

Unäres Plus

Unäres Minus

Zuwachs

Dekrementieren

Dereferenzierung (Adresse)

Zeigerreferenz

Gibt die Größe eines Objekts zurück

Typecast (Umwandlung)

Rechts nach links
*
/
%
Multiplizieren

Teilen

Rest

Links nach rechts
+
Binäres Plus (Addition)

Binäres 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
& Bitweises UND Links nach rechts
^ Bitweises exklusives ODER Links nach rechts
| Bitweises ODER Links nach rechts
&& Logisches UND Links nach rechts
|| Logisches ODER Links nach rechts
?: Bedingter Operator Rechts nach links
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
Einfache Zuordnung

Produkt zuordnen

Quotient zuordnen

Rest zuweisen

Summe zuweisen

Unterschied zuordnen

Weisen Sie bitweises UND zu

Weisen Sie bitweises XOR zu

Weisen Sie bitweises ODER zu

Linksverschiebung zuweisen

Rechte Schicht zuweisen

Rechts nach links
, Trennzeichen von Ausdrücken Links nach rechts

Diese Regeln leiten den Compiler an, wie Ausdrücke mit mehreren Operatoren im selben Ausdruck ausgewertet werden. Der Multiplikationsoperator beispielsweise hat in der Gleichung A + B * C gemäß dem einen höheren Vorrang als der Additionsoperator Vorrang Regeln. Daher wertet der Compiler zuerst den Ausdruck B * C aus, bevor er A zum Ergebnis hinzufügt.

Schauen wir uns ein Beispiel an Operator Vorrang durch Code.

#include

int hauptsächlich ( ) {

int A = 43 , B = elf , C = 16 , D = 31 ;

int Ergebnis = ++ A * B -- + C / -- D ;

Druckf ( 'a = %d \N ' , A ) ;

Druckf ( 'b = %d \N ' , B ) ;

Druckf ( 'c = %d \N ' , C ) ;

Druckf ( 'd = %d \N ' , D ) ;

Druckf ( 'Ergebnis = %d \N ' , Ergebnis ) ;

zurückkehren 0 ;

}

Die vier Variablen a, b, c und d werden im obigen Code deklariert, und ihre Anfangswerte sind entsprechend 43, 11, 16 und 31. Dann wendet es eine Vielzahl von Arithmetik- und Zuweisungsoperatoren auf diese Variablen in einem Ausdruck an. Der Ausdruck erhöht den Wert von a mithilfe des Pre-Increment-Operators ++a, multipliziert das Ergebnis mit dem Post-Decrement-Operator b– und addiert dann das Ergebnis zur Division von c durch den Pre-Decrement-Wert von d. (unter Verwendung des Prä-Dekrement-Operators –d). Die Variable result wird dann verwendet, um das Gesamtergebnis dieses Ausdrucks aufzunehmen.

Ausgang

Assoziativität in C

Assoziativität bezieht sich auf die Reihenfolge, in der die Operatoren während eines Ausdrucks mit derselben Priorität ausgewertet werden. Von links nach rechts und von rechts nach links Assoziativität sind die beiden Formen der Assoziativität in C. Wenn zwei Operatoren gleich sind Vorrang , werden sie von links nach rechts nach dem Konzept von links nach rechts bewertet Assoziativität . Wird jedoch die gleiche Rangfolge eingehalten, werden die Operatoren von rechts nach links entsprechend rechts nach links ausgewertet Assoziativität .

Zum Beispiel hat der Inkrementoperator ++ von rechts nach links Assoziativität , was das Inkrement bedeutet Operator wird nach der Variablen ausgewertet. Während das logische UND Operator hat eine von links nach rechts Assoziativität , was bedeutet, dass der Operator von links nach rechts ausgewertet wird.

#include

int Haupt() {

int ein = 6 , b = 3 , c = 2 ;

int Ergebnis = a * b / c;

printf( 'Ergebnis = %d \N ' , Ergebnis);

zurückkehren 0 ;

}

Die drei Variablen a, b und c werden in diesem Code deklariert und mit 6, 3 bzw. 2 initialisiert. Dann wendet es Multiplikations- und Divisionsoperationen auf diese Variablen in einem Ausdruck an. Multiplikation und Division werden in C von links nach rechts geordnet, basierend auf ihrer Assoziativität da sie die gleiche Prioritätsstufe haben. Dies zeigt an, dass die Divisionsoperation zuerst kommt, gefolgt von der Multiplikationsoperation, wenn der Ausdruck a * b / c ausgewertet wird.

Ausgang

Abschluss

Vorrang des Operators Und Assoziativität sind entscheidende Konzepte in der C-Programmierung, die dabei helfen, die Reihenfolge der Ausführung von Ausdrücken zu bestimmen. Betreiber mit der höchsten Vorrang Ebene werden zuerst ausgewertet und Assoziativität Regeln helfen bei der Bestimmung der Reihenfolge, wenn mehrere Operatoren mit derselben Priorität verwendet werden. Verständnis Operator Vorrang Und Assoziativität ist beim Entwerfen komplexer Programme unerlässlich und trägt dazu bei, saubereren und effizienteren Code mit weniger Fehlern zu erstellen.