代入演算子 +=,  -= ,  *= , /=, の仕組みをみていきましょう。

アレサ 「そろそろプログラムを組む土台をつくりあげていきましょう。


#include <stdio.h>


int main (void)

{

int a;

a=10;

a+=3;


printf("aの値は%dです\n",a);


return 0;

}


コンパイル結果は


aの値は13です。


となります。


このa+=3;の+=は加算代入演算子とよばれています。


加算代入演算子は


+=の左側にある変数aが今、格納している数値に右側の数値をプラスしたものを


変数aに代入するという機能があります





今のプログラムの場合


a+=3;



変数aが今格納している数値10に3を足したものを


変数aに代入するというはたらきがあります。


a=a+3;


を実行するとも言えます。


a=a+3;


この記述方法はプログラム特有のものですね


a=a+3;


数学の

a=a+3という意味ではありません。


a=a+3;


は命令文であり


変数aに変数aが今格納している値に3を加えたものを代入せよ


とコンピュータに命令しているのです






加算代入演算子については


次のエピソードで詳しく述べてみたいとおもいます。



もう一つ別の代入演算子の例をみてみましょう。


#include <stdio.h>


int main (void)

{

int a;

a=10;

a-=3;


printf("aの値は%dです\n",a);


return 0;

}

コンパイル結果は


aの値は7です。


となります


この命令文


a-=3;


の-=は減算代入演算子とよばれています。


減算代入演算子-=は


-=の左側にある変数aが今、格納している数値から右側の数値をマイナスしたものを


変数aに代入するという機能があります


a=a-3;


が実行されているともいえますね。


ここでも


a=a-3;


数学の

a=a-3

という意味ではありません。


a=a-3;


は命令文であり


変数aに変数aが今格納している値から3を引いたものを代入せよ


とコンピュータに命令しているのです。




この場合a-=3;


が実行されると


aが今格納している値10から3をひいたもの


すなわち


7


aに代入されます。




では、さらに別の代入演算子の例をみていきましょう。


#include <stdio.h>


int main (void)

{

int a;

a=10;

a*=3;


printf("aの値は%dです\n",a);


return 0;

}

コンパイル結果は


aの値は30です。


となります


このa*=3;


の*=は乗算代入演算子とよばれています。


乗算代入演算子*=は


変数aが今、格納している値に*=の右側にある数値3を掛けたものを


変数aに代入するという機能があります


今のプログラムの場合


a*=3;


が実行されて


変換aが今、格納している値10に3をかけたものが


変換aに代入されています。


a=a*3;


が実行されているともいえます。


ここでも


a=a*3;


数学の

a=a*3

という意味ではありません。


a=a*3;


は命令文であり


変数aに変数aが今格納している値に3をかけたものを代入せよ


とコンピュータに命令しているのです。






では次に


もう1つ代入演算子の例をみていきましょう。


#include <stdio.h>


int main (void)

{

int a;

a=10;

a/=3;


printf("aの値は%dです\n",a);


return 0;

}

コンパイル結果は


aの値は3です。


となります


このa/=3;の/=は除算代入演算子とよばれています。


除算代入演算子/=には


変数aが今、格納している値を/=の右側の数値3で割った値を


変数aに代入するという


機能があります


この場合の


a/=3;



変換aが今、格納している値10を3をわったものを


変換aに代入しています。


a=a/3;


が実行されているともいえますね。


ここでも


a=a/3;


数学の

a=a/3

という意味ではありません。


a=a/3;


は命令文であり


変数aに変数aが今格納している値10を3でわったものを代入せよ


とコンピュータに命令しているのです。



このとき


変数aの今、格納している値は10となっています。


ですので


a/3は


10/3


つまり


特殊なタイプの整数値同士の割り算となっています。


つまり


整数値を整数値で割ると計算結果も


小数点以下は切り捨てられ整数値になるので


通常の計算では


10÷3=3.3333333・・・・・


となるはずの小数点以下は切り捨てられ


10÷3=3となり


3が変数aに代入され


aの値は3となります。」



ソーラー「そして


次は・・・」



アレサ「次は


剰余代入演算子%=


の例をみていきましょう。


#include <stdio.h>


int main (void)

{

int a;

a=10;

a%=3;


printf("aの値は%dです\n",a);


return 0;

}


コンパイル結果


EAZY IDECの場合

Visual Studioの場合


aの値は1です。


となります


このa%=3;の%=は剰余代入演算子とよばれています。


剰余代入演算子%=は


変数aが今、格納している値を%=の右側の数値3で割った時の余りを


変数aに代入するという


機能があります


この場合の


a%=3;



変数aが今、格納している値10を3で割ったときの余り1を


変数aに代入しています。


a=a%3;


が実行されているともいえますね。


a=a%3;


は命令文であり


変数aに変数aが今格納している値10を3でわった時の余り1を代入せよ


とコンピュータに命令しているのです。



これらの5つの代入演算子


+=(加算代入演算子)

-=(減算代入演算子)

*=(乗算代入演算子)

/=(除算代入演算子)

%=(剰余代入演算子)


a+=3;

a-=3;

a*=3;

a/=3;

a%=3;

の命令文をみていただければおわかりになられますように


aという項

3という項


に作用しています。


このように(2つの項)に作用する演算子は


2項演算子とよばれています。」


ソーラー 「単項(一つの項)に作用する演算子は


単項演算子とよばれているので



たとえば


-10        


では


-は10という単項(一つの項)に作用しているので


単項演算子とよばれています。


では プログラム内で


      +10+500と記述された場合は


この+は単項演算子なのでしょうか?



+10+500の10の左側の+は単項演算子


右側の+は10と500の二項に作用して足し合わせを行っているので


二項演算子とよばれています。


これで すこしだけプログラムについて詳しくなったね。」




  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます