Handbuch zur dynamischen Ablaufverfolgung in Solaris

Rangfolge

Die D-Regeln für die Operatorrangfolge (auch Präzedenz oder Priorität) und Assoziativität sind in der folgenden Tabelle dargestellt. Diese Regeln sind recht komplex, aber erforderlich für die Gewährleistung einer genauen Kompatibilität mit den ANSI-C-Regeln für die Operatorrangfolge. Die Einträge sind nach absteigender Rangfolge sortiert.

Tabelle 2–11 Operatorrangfolge und Assoziativität in D

Operatoren 

Assoziativität 

() [] -> .

rechtsassoziativ 

! ~ ++ -- + - * & (Typ) sizeof stringof offsetof xlate

linksassoziativ 

* / %

rechtsassoziativ 

+ -

rechtsassoziativ 

<< >>

rechtsassoziativ 

< <= > >=

rechtsassoziativ 

== !=

rechtsassoziativ 

&

rechtsassoziativ 

^

rechtsassoziativ 

|

rechtsassoziativ 

&&

rechtsassoziativ 

^^

rechtsassoziativ 

||

rechtsassoziativ 

?:

linksassoziativ 

= += -= *= /= %= &= ^= |= <<= >>=

linksassoziativ 

,

rechtsassoziativ 

Einige der Operatoren in dieser Tabelle sind uns bisher noch nicht begegnet. Sie werden in späteren Kapiteln besprochen:

sizeof

Berechnet die Größe eines Objekts (Kapitel 7Strukturen und Unionen)

offsetof

Berechnet den Versatz einer Typkomponente (Kapitel 7Strukturen und Unionen)

stringof

Wandelt den Operanden in eine Zeichenkette um (Kapitel 6Zeichenketten)

xlate

Übersetzt einen Datentyp (Kapitel 40Übersetzer)

unäres &

Berechnet die Adresse eines Objekts (Kapitel 5Zeiger und Vektoren)

unäres *

Dereferenziert einen Zeiger auf ein Objekt (Kapitel 5Zeiger und Vektoren)

-> und .

Greift auf die Komponente einer Struktur bzw. einer Union zu(Kapitel 7Strukturen und Unionen)

Der in der Tabelle aufgeführte Komma-Operator (,) dient zur Gewährleistung der Kompatibilität mit dem Komma-Operator in ANSI-C, mit dem eine Reihe von Ausdrücken rechtsgerichtet ausgewertet und der Wert des am weiten rechts stehenden Ausdrucks zurückgegeben werden kann. Dieser Operator wird ausschließlich aus Kompatibilitätsgründen bereitgestellt und sollte nicht verwendet werden.

Der Eintrag () in der Tabelle der Operatorrangfolge stellt einen Funktionsaufruf dar. Beispiele für Aufrufe von Funktionen wie printf() oder trace() finden Sie in Kapitel 1Einführung. Kommata werden in D auch zum Auflisten von Argumenten für Funktionen und zum Erstellen von Schlüsseln für assoziative Vektoren verwendet. Dieses Komma ist nicht mit dem Komma-Operator identisch und garantiert keine rechtsgerichtete Auswertungsreihenfolge. Der D-Compiler bietet keine Garantie in Bezug auf die Auswertungsreihenfolge der Argumente einer Funktion oder der Schlüssel eines assoziativen Vektors. Bei der Verwendung von Ausdrücken mit interagierenden Nebeneffekten, wie beispielsweise des Ausdruckspaars i und i++, ist in diesem Kontext Vorsicht geboten.

Der Eintrag [] in der Tabelle der Operatorrangfolge stellt eine Referenz auf einen Vektor oder einen assoziativen Vektor dar. Beispiele für assoziative Vektoren finden Sie in Kapitel 1Einführung. Eine Sonderform des assoziativen Vektors, das Aggregat, wird in Kapitel 9Aggregate beschrieben. In Kapitel 5Zeiger und Vektoren erfahren Sie, wie der Operator [] auch zum Indizieren von C-Vektoren fester Größe eingesetzt werden kann.