苦学楽学塾 ホームページ
最終更新日:2025年1月2日
1.算術演算子
= (代入),+ (加算),- (減算),* (乗算),/ (除算)
% (int型a,int型bとして、a % bは、aをbで割った余りです)
+= (x += yは、x+yをxに代入します)
-= (x -= yは、x-yをxに代入します)
*= (x *= yは、x*yをxに代入します)
/= (x /= yは、x/yをxに代入します)
%= (x %=yは、x%yをxに代入します)
++ (int型aとして、a++はaの処理後にインクリメント、++aはインクリメントしてからaの処理)
-- (int型aとして、a--はaの処理後にデクリメント、--aはデクリメントしてからaの処理)
2.論理演算子
& (x & yは、xとyのビット毎のANDです)
| (x | yは、xとyのビット毎のORです)
^ (x^yは、xとyのビット毎のXOR、排他的ORです)
~ (~xは、xのビット毎反転です)
&& (A && Bは、A,Bがともに真のときのみ真、それ以外は偽です)
|| (A || Bは、A,Bのいずれか一方が真のときに真、A,Bがともに偽のときのみ偽です)
! (!Aは、Aの反転です。つまり、Aが真のときに偽、Aが偽のときに真です)
&= (x &= yは、x&yをxに代入します)
|= (x |= yは、x|yをxに代入します)
^= (x ^= yは、x^yをxに代入します。yが1になっているxのビットが反転されます)
3.比較演算子
== (x == yは、xとyが等しいときに真、等しくないときに偽です)
!= (x != yは、xとyが等しくないときに真、等しいときに偽です)
> (x > yは、xがyより大きいときに真、xがy以下のときに偽です)
< (x < yは、xがyより小さいときに真、xがy以上のときに偽です)
>= (x >= yは、xがy以上のときに真、xがy未満のときに偽です)
<= (x <= yは、xがy以下のときに真、yがx未満のときに偽です)
4.シフト演算子
>> (x >> aは、xを右にaビットシフトします)
<< (x << aは、xを左にaビットシフトします)
>>= (x >>= aは、xを右にaビットシフトしてxに代入します)
<<= (x <<= aは、xを左にaビットシフトしてxに代入します)
右シフト>>ですが、対象のxが、charか、unsigned charかで動作が異なります。x > 0のときは、charでもunsigned charでも、同じ右シフトです。char xが、x = -8で、2進数で書いて11111000のとき、x >> 1は、11111100になります(負数であることが維持されます)。unsigned char xが、x = 248で、2進数で書いて11111000のとき、x >> 1は、01111100になります(最上位ビットは0で埋められます)。
5.その他の演算子
* (ポインタと呼ばれる演算子です。pc1がデータが位置するアドレスであるとき、*pc1はそのデータを表します)
& (&aは、変数aのデータが存在するアドレスを表します。aがint型なら、&aの指す位置には整数データがいるので、&aの型は、int *です)
. (a.bは、構造体aのメンバbを表します)
-> (pa->bは、構造体へのポインタpaの指す構造体のメンバbを表します)
sizeof (sizeof xは、xの型がメモリ上で占有するバイト数を示します)
キャスト演算子 ((型)xとすると、xの型を変換します。例えば、long x,int yとして、y = (int)xとすると、xをint型に変換してyに代入します。上位ビットは失われるので注意してください)
6.演算子の優先順位
C言語の式では、原則として左から右に向って評価されていきます。但し、カッコがついていて(・・・)となっている部分は最優先されます。x&y<<zは、yをzビットだけ左シフトしたものとxとのビット毎ANDになりますが、(x&y)<<zとすると、xとyのビット毎ANDの結果をzビットだけ左シフトします。配列要素を取り出す[・・・]も最優先です。*a[3]は、ポインタを格納している配列aの先頭を0番目として3番目のポインタの指すデータを表します。構造体のメンバを表す'.'と'->'も最優先です。++a.bや、++p->bは、構造体のメンバa.b,p->bのインクリメントです。
次に、インクリメント++、デクリメント--,正負符号の+,-,キャスト、ポインタ*,アドレスの&,データ・サイズを取得するsizeofが優先されます。例えば、x*++*pは、インクリメントが優先され、xと*pをインクリメントしたものとの積です。
次に、乗算*,除算/,剰余%
次に、加算+,減算-
次に、シフト<<,>>
次に、比較演算子、<,>,<=,<=
次に、等しいかどうかの、==,!=
次に、ANDの&
次に、XORの^
次に、ORの|
次に、「かつ」の&&
次に、「または」の||
次に、代入演算子(=,+=など)
最後に、カンマ','が評価されます。
【広告】 ここから広告です。ご覧の皆さまのご支援ご理解を賜りたく、よろしくお願いいたします。
【広告】 広告はここまでです。