本トピックは発展的な内容を扱うので飛ばして構いません。一通りC言語の学習を終えてから見ることをお勧めします。
以下、すべての演算子を分野ごとに表にまとめて示します。結合性とは、同じ優先順位の演算子が並ぶときに左右どちらの演算が先に行われるのかを表します。例えば、a-b-cという式があったとき演算子-は左結合性を持つので(a-b)-cと解釈されます。もし演算子-が右結合性を持つならばa-(b-c)と解釈されます。
算術演算子
演算子 | 名称 | 効果 | 結合性 | 計算の優先順位 |
+x | 単項+演算子 | xの1倍 | 右 | 2 |
-x | 単項-演算子 | xの-1倍 | 右 | 2 |
x+y | 加算演算子 | 和 | 左 | 5 |
x-y | 減算演算子 | 差 | 左 | 5 |
x*y | 乗算演算子 | 積 | 左 | 4 |
x/y | 除算演算子 | 商 | 左 | 4 |
x%y | 剰余演算子 | 余り | 左 | 4 |
x++ | 後置インクリメント演算子 | x=x+1 | 左 | 1 |
x– | 後置デクリメント演算子 | x=x-1 | 左 | 1 |
++x | 前置インクリメント演算子 | x=x+1 | 右 | 1 |
–x | 前置デクリメント演算子 | x=x-1 | 右 | 1 |
x+=y | 加算代入演算子 | x=x+y | 右 | 15 |
x-=y | 減算代入演算子 | x=x-y | 右 | 15 |
x*=y | 乗算代入演算子 | x=x*y | 右 | 15 |
x/=y | 除算代入演算子 | x=x/y | 右 | 15 |
x%=y | 剰余代入演算子 | x=x%y | 右 | 15 |
x=y | 単純代入演算子 | xにyを代入 | 右 | 15 |
比較演算子、論理演算子
演算子 | 名称 | 効果 | 結合性 | 計算の優先順位 |
x>y | 比較演算子 | 不等号が真なら1,偽なら0 | 左 | 7 |
x>=y | 比較演算子 | 不等号が真なら1,偽なら0 | 左 | 7 |
x<y | 比較演算子 | 不等号が真なら1,偽なら0 | 左 | 7 |
x<=y | 比較演算子 | 不等号が真なら1,偽なら0 | 左 | 7 |
x==y | 等価演算子 | 等号が真なら1,偽なら0 | 左 | 8 |
x!=y | 非等価演算子 | 等号が真なら0,偽なら1 | 左 | 8 |
x&&y | 論理積演算子 | xが非0かつyが非0ならば1,それ以外は0 | 左 | 12 |
x||y | 論理和演算子 | xが非0またはyが非0ならば1,それ以外は0 | 左 | 13 |
!x | 論理否定演算子 | xが非0ならば0,それ以外は1 | 右 | 2 |
x?y:z | 条件演算子 | xが非0ならy,それ以外はz | 右 | 14 |
ビット演算子
演算子 | 名称 | 効果 | 結合性 | 計算の優先順位 |
x<<y | 左シフト演算子 | xをyビット左にシフトし、空いたビットは0にする | 左 | 6 |
x>>y | 右シフト演算子 | xをyビット右にシフトする | 左 | 6 |
x&y | ビット積 | ビット単位の論理積 | 左 | 9 |
x^y | ビット排他的論理和演算子 | ビット単位の排他的論理和 | 左 | 10 |
x|y | ビット和演算子 | ビット単位の論理和 | 左 | 11 |
~x | ビット否定演算子 | ビット単位の否定 | 右 | 2 |
x<<=y | 左シフト代入演算子 | x=x<<y | 右 | 15 |
x>>=y | 右シフト代入演算子 | x=x>>y | 右 | 15 |
x&=y | ビット代入積 | x=x&y | 右 | 15 |
x^=y | ビット排他的論理和代入演算子 | x=x^y | 右 | 15 |
x|=y | ビット和代入演算子 | x=x|y | 右 | 15 |
その他、ポインタに関する演算子
演算子 | 名称 | 効果 | 結合性 | 計算の優先順位 |
x.y | メンバ演算子 | xのメンバy | 左 | 1 |
x() | 関数呼び出し演算子 | 関数xをカッコないの引数で呼び出す | 左 | 1 |
(x)y | キャスト演算子 | yをxにキャストする | 右 | 3 |
sizeof x | sizeof演算子 | xのビット単位のサイズを返す | 右 | 2 |
x,y | コンマ演算子 | xとyを並列する | 左 | 16 |
*x | 間接演算子 | xが指すオブジェクト | 右 | 2 |
&x | アドレス演算子 | xのアドレスを返す | 右 | 2 |
x[y] | 添え字演算子 | xからy後のアドレスのオブジェクト | 左 | 1 |
x->y | アロー演算子 | (*x).y | 左 | 1 |
計算の優先順位
計算の優先順位ですべての演算子を並び替えると次の表のようになります。
計算の優先順位 | 演算子 |
1 | x++ |
1 | x– |
1 | ++x |
1 | –x |
1 | x.y |
1 | x() |
1 | x[y] |
1 | x->y |
2 | +x |
2 | -x |
2 | !x |
2 | ~x |
2 | sizeof x |
2 | *x |
2 | &x |
3 | (x)y |
4 | x*y |
4 | x/y |
4 | x%y |
5 | x+y |
5 | x-y |
6 | x<<y |
6 | x>>y |
7 | x>y |
7 | x>=y |
7 | x<y |
7 | x<=y |
8 | x==y |
8 | x!=y |
9 | x&y |
10 | x^y |
11 | x|y |
12 | x&&y |
13 | x||y |
14 | x?y:z |
15 | x+=y |
15 | x-=y |
15 | x*=y |
15 | x/=y |
15 | x%=y |
15 | x=y |
15 | x<<=y |
15 | x>>=y |
15 | x&=y |
15 | x^=y |
15 | x|=y |
16 | x,y |
関連
コメント