TOPページ > 情報TOP > C言語のすすめ > C言語の文法 > C言語の演算子
 苦学楽学塾 ホームページ

  苦学楽学塾  
 -C言語の演算子-  
最終更新日:202512

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の|
 次に、「かつ」の&&
 次に、「または」の||
 次に、代入演算子(=,+=など)
 最後に、カンマ','が評価されます。


TOPページに戻る  
情報TOP  
苦学楽学塾ご案内  
数学のページ  
物理のページ  
楽天ブログ  
苦学楽学塾ブログ  
苦学楽学塾twitter  
活動報告ブログ  
プライバシー・ポリシー


【広告】 ここから広告です。ご覧の皆さまのご支援ご理解を賜りたく、よろしくお願いいたします。
【広告】 広告はここまでです。

© 2005-2025 制作:(有)りるらる