C LanguageOperatoren


Einführung

Ein Operator in einer Programmiersprache ist ein Symbol, das den Compiler oder Interpreter anweist, eine bestimmte mathematische, relationale oder logische Operation auszuführen und ein Endergebnis zu erzeugen.

C hat viele mächtige Operatoren. Viele C-Operatoren sind binäre Operatoren, dh sie haben zwei Operanden. In a / b ist / beispielsweise ein binärer Operator, der zwei Operanden ( a , b ) akzeptiert. Es gibt einige unäre Operatoren, die einen Operanden verwenden (zum Beispiel: ~ , ++ ) und nur einen ternären Operator ? : .

Syntax

  • expr1 Operator
  • Operator Ausdruck2
  • Ausdruck1 Operator Ausdruck2
  • Ausdruck1? Ausdruck2: Ausdruck3

Bemerkungen

Die Betreiber haben ein arity, einen Vorrang und eine Assoziativität.

  • Arity gibt die Anzahl der Operanden an. In C gibt es drei verschiedene Operatoren:

    • Unary (1 Operand)
    • Binär (2 Operanden)
    • Ternär (3 Operanden)
  • Vorrang gibt an, welche Operatoren sich zuerst an ihre Operanden "binden". Das heißt, welcher Operator hat Priorität, um seine Operanden zu bearbeiten. Beispielsweise folgt die C-Sprache der Konvention, dass Multiplikation und Division Vorrang vor Addition und Subtraktion haben:

    a * b + c
    

    Gibt das gleiche Ergebnis wie

    (a * b) + c
    

    Wenn dies nicht erwünscht ist, kann der Vorrang mithilfe von Klammern erzwungen werden, da sie die höchste Priorität aller Operatoren haben.

    a * (b + c)
    

    Dieser neue Ausdruck führt zu einem Ergebnis, das sich von den vorherigen beiden Ausdrücken unterscheidet.

    Die C-Sprache hat viele Prioritätsstufen. Nachfolgend wird eine Tabelle aller Operatoren in absteigender Rangfolge aufgeführt.

    Vorrang-Tabelle

    Operatoren Assoziativität
    () [] -> . links nach rechts
    ! ~ ++ -- + - * (dereference) (type) sizeof rechts nach links
    * (Multiplikation) / % links nach rechts
    + - links nach rechts
    << >> links nach rechts
    < <= > >= links nach rechts
    == != links nach rechts
    & links nach rechts
    ^ links nach rechts
    | links nach rechts
    && links nach rechts
    || links nach rechts
    ?: rechts nach links
    = += -= *= /= %= &= ^= |= <<= >>= rechts nach links
    , links nach rechts
  • Assoziativität gibt an, wie Gleichheitsoperatoren standardmäßig gebunden werden, und es gibt zwei Arten: Links nach rechts und Rechts nach links . Ein Beispiel für die Links-Rechts- Bindung ist der Subtraktionsoperator ( - ). Der Ausdruck

    a - b - c - d
    

    hat drei Subtraktionen mit identischer Priorität, ergibt jedoch das gleiche Ergebnis wie

    ((a - b) - c) - d
    

    weil der am weitesten links - zuerst an seine zwei Operanden bindet.

    Ein Beispiel für die Assoziativität von rechts nach links sind die Dereferenzierungsoperatoren * und Post-Increment ++ . Beide haben gleiche Priorität, wenn sie also in einem Ausdruck wie verwendet werden

    * ptr ++
    

    ist das äquivalent zu

    * (ptr ++)
    

    weil der rechte, unäre Operator ( ++ ) zuerst an seinen einzelnen Operanden bindet.

Operatoren Verwandte Beispiele