TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜10時限目〜 代入演算子について・・・

〜目次〜

 

 

代入演算子

代入演算子(assignment operator)

について見ていきます。

代入演算子とは、変数に値を代入する際に使っていた「=」記号のことです。

この演算子は、通常の=の意味である「等しい」、

という意味ではないということは、何度か説明してきました。

この代入演算子は、

左辺の変数に右辺の値を代入する

という機能を持つ演算子です。

代入演算子は=だけでなく、

=と他の演算を組み合わせた形があります。

以下が代入演算子の種類です。

f:id:YuyaTerayama:20180903133608p:plain

これらの代入演算子は、他の演算と代入を同時に行う

複合的な演算子になっています。

例で、

a += b;

+=演算子の場合、

変数aの値に変数bの値を足し算し、その値をaに代入する

という演算を行います。

+演算子と=演算子の機能を合わせたような、

機能を持っています。

注意するところとして、+と=の間にスペースなどを入れてはいけません。

実際に以下のコードで複合的演算子を見ていきます。

sample16.c

f:id:YuyaTerayama:20180903134330p:plain

ーsample16の実行画面ー

1番目の整数を入力してください。

3

2番目の整数を入力してください。

6

3番目の整数を入力してください。

7

3つの値の合計値は16です。

+=演算子を使うことで、

シンプルでわかりやすいコードを書くことができました。

+演算子と=演算子を使って、

書くことももちろんできます。

 

sizeof演算子

sizeof演算子

というものを使って見ます。

実際に以下のコードを入力しましょう。

sample17.c

f:id:YuyaTerayama:20180903135149p:plain

ー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〜