Solaris 動的トレースガイド

優先度

以下の表に、D の演算子の優先順位と結合の規則を一覧します。これらの規則は少し複雑ですが、ANSI-C の演算子の優先順位の規則との完全な互換性を実現するためには欠かせないものです。表の項目は、上から優先順位の高い順になっています。

表 2–11 D の演算子の優先順位と結合規則

演算子 

結合規則 

() [] -> .

左から右 

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

右から左 

* / %

左から右 

+ -

左から右 

<< >>

左から右 

< <= > >=

左から右 

== !=

左から右 

&

左から右 

^

左から右 

|

左から右 

&&

左から右 

^^

左から右 

||

左から右 

?:

右から左 

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

右から左 

,

左から右 

この表の中には、まだ説明していない演算子も含まれています。これらの演算子については、次の章以降で説明します。

sizeof

オブジェクトのサイズを計算する (第 7 章構造体と共用体)

offsetof

型メンバーのオフセットを計算する (第 7 章構造体と共用体)

stringof

オペランドを文字列に変換する (第 6 章文字列)

xlate

データ型を翻訳する (第 40 章トランスレータ)

単項の &

オブジェクトのアドレスを計算する (第 5 章ポインタと配列)

単項の *

オブジェクトへのポインタを間接参照する (第 5 章ポインタと配列)

->.

構造体型または共用体型のメンバーにアクセスする (第 7 章構造体と共用体)

表中のコンマ (,) 演算子は、ANSI-C のコンマ演算子との互換性を実現するために用意されたものです。この演算子は、複数の式を左から順に評価し、一番右の式の値を返します。この演算子は C との完全な互換性を実現するためのものであり、通常は使用しません。

演算子の優先順位の表にある () は、関数呼び出しを表します。printf()trace() などの関数呼び出しの例は、第 1 章はじめにに記載されています。D では、コンマを使って、関数の引数を列挙したり、連想配列のキーのリストを作成したりできます。このコンマはコンマ演算子とは別のもので、「左から右」の順で評価を行うとはかぎりません。D コンパイラが関数の引数を評価する順番や、連想配列のキーを評価する順番は、特に決まっていません。このため、複数の式、たとえば ii++ を組み合わせて使用するときは、相互の副作用に注意してください。

演算子の優先順位の表にある [] は、配列または連想配列の参照を表します。連想配列の例は、第 1 章はじめにに記載されています。「集積体」と呼ばれる特殊な連想配列については、第 9 章集積体で説明します。演算子 [] を使って、固定サイズの C 配列にインデックスを付けることもできます。これについては、第 5 章ポインタと配列を参照してください。