おぼえがき

過ちては則ち改むるにうんぬんかんぬん

代入演算子について(C言語)

f:id:feci:20210810151051j:plain

C11

 

Cの代入演算子について。

代入演算子とは、変数に値を代入するときに使われる演算子のことです。

 

 

C11で使われる代入演算子は以下のとおりです。

 

a = 1     変数aに1を代入
a += 1   変数aにa+1の演算結果を再代入
a -= 1    変数aにa-1の演算結果を再代入
a *= 1    変数aにa*1の演算結果を再代入
a /= 1    変数aにa/1の演算結果を再代入
a %= 1  変数aにa/1の演算結果を再代入
a <<= 1   変数aの値を2進数にして1bit左へシフトして再代入
a >>= 1   変数aの値を2進数にして1bit右へシフトして再代入
a &= 1  ???
a ^= 1  ???
a |= 1    ???

 

 

<<は左シフト演算子です。

なので<<=では、左の整数を2進数にして右の整数分のbitだけ左の値を左へシフトします。

具体的に言うと、下記のような処理になります。

 

void main() {

int a = 5, b = 1;
a <<= d;

}

 

上記のような変数aとbがあった場合、aの中身は2進数表記では101となります。

101をbの値である1bitだけ左にシフトすると、aの値は1010となります(10)。

ちなみにこれが2bitシフトすると、aの値は10100となります(20)。

 

>>は右シフト演算子です。

なので>>=では上記の<<=と逆方向に値がシフトされます。

つまり、a >>= d; ではaの値は101から10に変わります(2)。

 

 

& と ^ と | の演算子の処理については、現時点では意味不明なのでアウトプットすることができません。

理解できしだい、順次この記事の内容を更新をしていく予定です。

申し訳ありません。

 

 

以上です。