第18章 演算子の優先順位と結合法則


この章では、C#で取り扱う演算子について解説します。多くの演算子は今までの章ですでに登場してきています。



演算子は、今更なんですが、式で実行する演算を指定するものです。演算子には優先順位があります。

a + b * c
とあれば、b * cが先に計算され(この値がdとすると)、その後a + dが評価されます。多くの演算子の優先順位は、数学のそれと同じです。優先順位が不明もしくは不安な場合は、先に評価したい部分を()でくくれば安全です。しかし、文法上優先順位がきちんと定められています。

優先順位カテゴリー演算子
1一次式x.y, f(x), a[x], x++, x--, new, typeof, checked, unchecked
2単項式+, -, !, ~, ++x, --x, (T)x
3乗法式*, /, %
4加法式+, -
5シフト<<, >>
6関係式および型チェック<, >, <=, >=, is, as
7等値式==, !=
8論理AND&
9論理XOR^
10論理OR|
11条件AND&&
12条件OR||
13条件?:
14代入=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=

同じ順位の演算子の場合、2項演算では代入演算子をのぞき左から右に結合されます(左→右結合規則)。

たとえば、「+」と「-」は優先順位が同じなので、左→右結合が適応されます。

a + b - c
(a + b) - c
となります。

条件AND,ORはショートサーキット評価が行われます。

たとえば、

a && b
において、aがfalseならbの真偽にかかわらず式の値は偽になります。そこで、aが偽の場合はbの評価が行われません。

同様に

a || b
において、aがtrueならbの真偽にかかわらず式の値はtrueになります。そこで、aが真の場合bの評価は行われません。

一方、a & bとか、a | bの場合はaの真偽にかかわらず、aもbも評価されます。

実際のプログラミングで、これらを使い分けなくてはならない場面は多くはないはずです。


[C# Index] [総合Index] [Previous Chapter] [Next Chapter]

Update 25/Aug/2006 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。