*C言語* 〜10時限目〜 代入演算子について・・・
〜目次〜
代入演算子
代入演算子(assignment operator)
について見ていきます。
代入演算子とは、変数に値を代入する際に使っていた「=」記号のことです。
この演算子は、通常の=の意味である「等しい」、
という意味ではないということは、何度か説明してきました。
この代入演算子は、
左辺の変数に右辺の値を代入する
という機能を持つ演算子です。
代入演算子は=だけでなく、
=と他の演算を組み合わせた形があります。
以下が代入演算子の種類です。
これらの代入演算子は、他の演算と代入を同時に行う
複合的な演算子になっています。
例で、
a += b;
+=演算子の場合、
変数aの値に変数bの値を足し算し、その値をaに代入する
という演算を行います。
機能を持っています。
注意するところとして、+と=の間にスペースなどを入れてはいけません。
実際に以下のコードで複合的演算子を見ていきます。
sample16.c
ーsample16の実行画面ー
1番目の整数を入力してください。
3
2番目の整数を入力してください。
6
3番目の整数を入力してください。
7
3つの値の合計値は16です。
+=演算子を使うことで、
シンプルでわかりやすいコードを書くことができました。
書くことももちろんできます。
sizeof演算子
sizeof演算子
というものを使って見ます。
実際に以下のコードを入力しましょう。
sample17.c
ーsample17の実行画面ー
short int型のサイズは2バイトです。
int型のサイズは4バイトです。
long int型のサイズは8バイトです。
double型のサイズは8バイトです。
変数aのサイズは4バイトです。
式a+bのサイズは4バイトです。
sizeof演算子を使うことで、
色々な型や式のサイズを知ることができます。
C言語の型や式のサイズはお使いの環境で異なる場合があるので、
出力結果が異なる場合があります。
現段階ではサイズは気にしていないですけど、
これからC言語を書いて行く上で、
サイズなどを知らなければ処理できない問題などにぶつかります。
そこでsizeof演算子でサイズを調べます。
シフト演算子
この時限の最後に、普段見ない演算子について扱います。
<<、>>という記号を使った
シフト演算子(shift operator)
という演算です。
左辺を2進数で表記した時の値を、右辺で指定したケタ数分だけ左にずらし、
はみ出したケタ数だけ右端から0を入れる
という演算を行います。
言葉だけでは理解できないと思いますので、
例を見てみます。
short int型の値の5<<2という左シフト演算を行う場合を考えます。
5 0000000000000101
>>2
ーーーーーーーーーーーーー2ケタ左にずらし、右端のケタから0を入れる
20 00000000000010100
2進数の10100は10進数の20です。
つまり5<<2は、20となります。
一方、
右辺で指定したケタ数を右にずらし、
はみ出したケタ数だけ左端から0を入れる
という演算を行います。
シフト演算の意味
シフト演算は2進数のケタを左また右へずらす演算です。
この演算の意味は、
10進数で考えてみると、
「ケタを左へ1つずらす」ということは、
数を「(10の1乗)=10倍する」ことを意味します。
「ケタを左へ2ケタずらす」ということは、
数を「(10の2乗)=100倍する」ということになります。
同様に、2進数で考えてみると、
1ケタずらすということは「2倍」
2ケタずらすということは「4倍」
になります。
先ほどの例であげた5<<2の場合、
2ケタずらすので4倍です。
なので、5を4倍した結果の20になるのです。
右シフト演算子はその逆で、
1/2倍、1/4倍…としていきます。
コンピュータ内部では2進数が数値として扱われているため、
通常の四則演算よりも、
シフト演算の処理速度の方が速くなっています。
このためシフト演算を使った方が便利な場合があるのです。
〜END〜