Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C# Operator-Rangfolge und Assoziativität meistern: Ein praktischer Leitfaden

C# Operator-Rangfolge und Assoziativität meistern

Dieses ausführliche Tutorial erklärt, wie der C#-Compiler Ausdrücke durch Anwenden der Operator-Rangfolge und Assoziativitätsregeln auswertet. Lernen Sie mit klaren Beispielen und Referenztabellen.

Operator-Rangfolge in C#

Die Operator-Rangfolge definiert die Reihenfolge, in der Teile eines Ausdrucks ausgewertet werden. Jeder C#-Operator hat eine feste Prioritätsstufe, die sicherstellt, dass der Compiler Ausdrücke konsistent verarbeitet.

Zum Beispiel hat der Multiplikationsoperator * eine höhere Rangfolge als die Addition +. Daher wird im Ausdruck

int x = 4 + 3 * 5;
die Multiplikation zuerst ausgeführt, was x = 19 ergibt.

Wäre die Addition vor der Multiplikation priorisiert, wäre das Ergebnis 35 – aber C# folgt der etablierten Rangfolge-Hierarchie.


Operator-Rangfolge-Tabelle

Die folgende Tabelle listet Operatoren von der höchsten zur niedrigsten Rangfolge auf.

++, --++, --, +, -, !, ~*, /, %+, -<<, >><, <=, >, >===, !=&^|&&||? :=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
C# Operator-Rangfolge
KategorieOperatoren
Postfix-Inkrement und -Dekrement
Präfix-Inkrement, -Dekrement und Unär
Multiplikativ
Additiv
Shift
Relational
Gleichheit
Bitweises UND
Bitweises XOR
Bitweises ODER
Logisches UND
Logisches ODER
Ternär
Zuweisung

Zuweisungen haben die niedrigste Priorität, während Postfix-Inkremente/-Dekremente ganz oben stehen.


Beispiel 1: Operator-Rangfolge

using System;
namespace OperatorDemo {
    class OperatorPrecedence {
        public static void Main(string[] args) {
            int result1;
            int a = 5, b = 6, c = 4;
            result1 = --a * b - ++c;
            Console.WriteLine(result1);
            bool result2;
            result2 = b >= c + a;
            Console.WriteLine(result2);
        }
    }
}

Die Programmausgabe:

19 False

Auswertungsschritte:

Der zweite Ausdruck zeigt, dass Addition + eine höhere Rangfolge hat als Vergleich >=, daher wird c + a vor dem Vergleich ausgewertet.


Assoziativität von Operatoren in C#

Wenn zwei Operatoren die gleiche Rangfolge haben, verwendet der Compiler die Assoziativität, um die Auswertungsreihenfolge zu bestimmen. Die meisten C#-Operatoren sind links-nach-rechts, aber einige sind rechts-nach-links.

Beispiel:

int a = 5, b = 6, c = 3; int result = a * b / c;

Da * und / links-nach-rechts assoziativ sind, wird die Multiplikation zuerst ausgeführt, was 10 ergibt.

Rechts-nach-links Assoziativität ist bei Zuweisungsketten entscheidend:

int a = 5, b = 6, c = 3; a = b = c;

Der Wert 3 wird b zugewiesen, dann b an a, sodass alle Variablen 3 halten.

Die folgende Tabelle fasst die C#-Operator-Assoziativität zusammen.

++, --++, --, +, -, !, ~*, /, %+, -<<, >><, <=, >, >===, !=&^|&&||? :=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
C# Operator-Assoziativität
KategorieOperatorenAssoziativität
Postfix-Inkrement und -DekrementLinks nach Rechts
Präfix-Inkrement, -Dekrement und UnärRechts nach Links
MultiplikativLinks nach Rechts
AdditivLinks nach Rechts
ShiftLinks nach Rechts
RelationalLinks nach Rechts
GleichheitLinks nach Rechts
Bitweises UNDLinks nach Rechts
Bitweises XORLinks nach Rechts
Bitweises ODERLinks nach Rechts
Logisches UNDLinks nach Rechts
Logisches ODERLinks nach Rechts
TernärRechts nach Links
ZuweisungRechts nach Links

Wichtige rechts-nach-links Operatoren sind unäre Präfixe, der ternäre Operator und alle Zuweisungen.


Beispiel 2: Assoziativität in Aktion

using System;
namespace OperatorDemo {
    class OperatorAssociativity {
        public static void Main(string[] args) {
            int a = 5, b = 6, c = 3;
            int result = a * b / c;
            Console.WriteLine(result);
            a = b = c;
            Console.WriteLine($"a = {a}, b = {b}, c = {c}");
        }
    }
}

Die Ausgabe ist:

10 a = 3, b = 3, c = 3

C Sprache

  1. C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
  2. C# Operatoren – Umfassender Leitfaden zu Operatoren in C#
  3. C# Ternärer Operator: Knapper Leitfaden zu bedingten Ausdrücken
  4. C# Klassen & Objekte: Fundamente für robustes OOP
  5. C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
  6. C# Partielle Klassen und Methoden verstehen
  7. Versiegelte Klassen und Methoden in C# meistern
  8. C++ Operatoren erklärt: Typen, Beispiele und Beispielprogramme
  9. C-Konstanten und Literale: Typen, Verwendung & Best Practices
  10. Eingabe und Ausgabe in C meistern: scanf, printf & Co.