Zuweisung ^=<< Index >>Bereich ::

Operatorenklammerung ()

In Programmen treten häufig mehrere Operatoren hintereinander auf, welche Variablen und Werte verändern. Die Reihenfolge, in welcher diese Operatoren abgearbeitet werden, ist eindeutig festgelegt anhand von Abarbeitungsrichtung und Rangordnung. In einigen Fällen jedoch ist eine andere Reihenfolge erwünscht. Die Klammerung von Operatoren dient dazu, diese Reihenfolge explizit festzulegen.

Operatoren werden mit runden Klammern () geklammert.

Details

Eine Klammerung hat den Rang 2 und wird von links nach rechts abgearbeitet. Im folgenden sind einige Fälle aufgelistet, wo Operatorenklammerung üblich ist.

Klammerung im Zweifelsfalle

Ist man sich nicht sicher, was für eine Abarbeitungsrichtung oder Rangordnung Operatoren untereinander haben, gibt es unerklärliche Phänomene in einer Codezeile, will man sichergehen, dass die Mathematik stimmt, ist man sich nicht sicher, wo welcher Typ herrscht, weiss man nicht, ob man ein Codefragment später mal erweitern könnte, ...

Es empfielt es sich STETS, Klammern zu setzen. Klammern schaden NIE!

Klammerung von mathematischen Ausdrücken

Die Klammerung von mathematischen Ausdrücken ist notwendig und hilfreich, da oft Operatoren hintereinander auftreten, die gleiche Abarbeitungsrichtung sowie gleiche Rangordnung besitzen.

Den Effekt von Klammerung kann man mittels dem Subtraktrions-Operator demonstrieren:

#include "stdio.h" int main(){ printf("%d\n", 10 - 5 - 3 - 2 ); printf("%d\n", 10 - ( 5 - 3 - 2 ) ); printf("%d\n", 10 - ( 5 - ( 3 - 2 ) ) ); printf("%d\n", 10 - 5 - ( 3 - 2 ) ); }

0 10 6 4

Grundsätzlich kann man berichten, dass die Abarbeitungsrichtung und Rangordnung der üblichen mathematischen Operatoren den gängigen Regeln der Mathematik entsprechen, so beispielsweise das Assoziativgesetzt (Punkt-vor-Strich-Regel):

printf("%d\n", 4 + 3 * 2); printf("%d\n", (4 + 3) * 2);

10 14

Klammerung zur optischen Unterstützung

Oftmals ist die Abfolge der Operatorenauswertung klar, dennoch werden Klammern gesetzt, um nur schon rein optisch dem Programmieren einen besseren Überblick zu geben. Gerade bei Indizes sind Ausdrücke wie (i - 1) oder (i + 1) relativ häufig und erleichtern dem Programmierer die Lesbarkeit und Fehlersuche.

int a[5][4]; printf("Arraysize: %d\n", (5 * 4)); printf("Maxindex: %d\n", (5 * 4) - 1); printf("Memoryuse: %d\n", sizeof(int) * (5 * 4) );

Arraysize: 20 Maxindex: 19 Memoryuse: 80

Weitere Einträge folgen. Diese Seite von ManderC ist noch in der Entwicklung.

Klammerung zur Typ-Sicherheit

Klammerung für seltene Auswertungskonflikte

Klammerung für Zuweisungen

Klammerung für Makros

 

Zuweisung ^=<< Index >>Bereich ::