3-5 <発展> すべての演算子

この記事は約3分で読めます。

本トピックは発展的な内容を扱うので飛ばして構いません。一通り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+11
x–後置デクリメント演算子x=x-11
++x前置インクリメント演算子x=x+11
–x前置デクリメント演算子x=x-11
x+=y加算代入演算子x=x+y15
x-=y減算代入演算子x=x-y15
x*=y乗算代入演算子x=x*y15
x/=y除算代入演算子x=x/y15
x%=y剰余代入演算子x=x%y15
x=y単純代入演算子xにyを代入15

比較演算子、論理演算子

演算子名称効果結合性計算の優先順位
x>y比較演算子不等号が真なら1,偽なら07
x>=y比較演算子不等号が真なら1,偽なら07
x<y比較演算子不等号が真なら1,偽なら07
x<=y比較演算子不等号が真なら1,偽なら07
x==y等価演算子等号が真なら1,偽なら08
x!=y非等価演算子等号が真なら0,偽なら18
x&&y論理積演算子xが非0かつyが非0ならば1,それ以外は012
x||y論理和演算子xが非0またはyが非0ならば1,それ以外は013
!x論理否定演算子xが非0ならば0,それ以外は12
x?y:z条件演算子xが非0ならy,それ以外はz14

ビット演算子

演算子名称効果結合性計算の優先順位
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<<y15
x>>=y右シフト代入演算子x=x>>y15
x&=yビット代入積x=x&y15
x^=yビット排他的論理和代入演算子x=x^y15
x|=yビット和代入演算子x=x|y15

その他、ポインタに関する演算子

演算子名称効果結合性計算の優先順位
x.yメンバ演算子xのメンバy1
x()関数呼び出し演算子関数xをカッコないの引数で呼び出す1
(x)yキャスト演算子yをxにキャストする3
sizeof xsizeof演算子xのビット単位のサイズを返す2
x,yコンマ演算子xとyを並列する16
*x間接演算子xが指すオブジェクト2
&xアドレス演算子xのアドレスを返す2
x[y]添え字演算子xからy後のアドレスのオブジェクト1
x->yアロー演算子(*x).y1

計算の優先順位

計算の優先順位ですべての演算子を並び替えると次の表のようになります。

計算の優先順位演算子
1x++
1x–
1++x
1–x
1x.y
1x()
1x[y]
1x->y
2+x
2-x
2!x
2~x
2sizeof x
2*x
2&x
3(x)y
4x*y
4x/y
4x%y
5x+y
5x-y
6x<<y
6x>>y
7x>y
7x>=y
7x<y
7x<=y
8x==y
8x!=y
9x&y
10x^y
11x|y
12x&&y
13x||y
14x?y:z
15x+=y
15x-=y
15x*=y
15x/=y
15x%=y
15x=y
15x<<=y
15x>>=y
15x&=y
15x^=y
15x|=y
16x,y

コメント

タイトルとURLをコピーしました