今回は、算術演算子についてです。
算術演算子というと何の事だかさっぱりわかりませんが、要は、和差積商の計算のことです。
なので、今回はそれほど難しい話にはならないかな~と思います。
さて、和差積商についてのお話。
和・差については、日常で使っている演算子と同じ演算子を使います。
なので、和については
そして、積・商について、こちらは、計算記号が変わります。
積については*(Lの二つ右にあるキーを、シフトキーを押しながら押す)、商については/(Mの3つ右のキー)を使います。
なので、2×3という計算をしたいときには
算術演算子というと何の事だかさっぱりわかりませんが、要は、和差積商の計算のことです。
なので、今回はそれほど難しい話にはならないかな~と思います。
さて、和差積商についてのお話。
和・差については、日常で使っている演算子と同じ演算子を使います。
なので、和については
2+3差については
2-3というように計算すればよいです。
そして、積・商について、こちらは、計算記号が変わります。
積については*(Lの二つ右にあるキーを、シフトキーを押しながら押す)、商については/(Mの3つ右のキー)を使います。
なので、2×3という計算をしたいときには
2*32÷3という計算をしたいときには
2/3という風に書きます。
今まで使ってきた変数を使って
a+b*cというように記述することもできます。
そしてもう一つ、演算子があります。
それは、実は、余りを求めてくれる演算子です。
例えば、3÷2を計算したとき、余りを出す計算だと、「1余り1」という答えになりますよね。
それを計算してくれるわけです。
その、余りを出してくれる計算には%を使います。
例えば、先の、3÷2の余りを求めたければ、
それは、実は、余りを求めてくれる演算子です。
例えば、3÷2を計算したとき、余りを出す計算だと、「1余り1」という答えになりますよね。
それを計算してくれるわけです。
その、余りを出してくれる計算には%を使います。
例えば、先の、3÷2の余りを求めたければ、
3%2というように記述します。
では、サンプルプログラムです(keisan.c)
11行目~16行目で計算をし、その値を、a~eに代入するという作業をしています。
24行目のx%%yというのは、表示のときに見やすくするというか、しっかり「x%y」と表示されるようにするためのものですから、あまり気にしないでください。
1 :#include<stdio.h>
2 :
3 :int main(){
4 : int x = 3;
5 : int y = 2;
6 : double x2 = 3.0;
7 : double y2 = 2.0;
8 : int a,b,c,d,e;
9 : double d2;
10:
11: a = x+y;
12: b = x-y;
13: c = x*y;
14: d = x/y;
15: d2 = x2/y2;
16: e = x%y;
17:
18: printf("x = 3, y = 2\n");
19: printf("int x+y = %d\n",a);
20: printf("int x-y = %d\n",b);
21: printf("int x*y = %d\n",c);
22: printf("int x/y = %d\n",d);
23: printf("double x/y = %5.3f\n",d2);
24: printf("int x%%y = %d\n",e);
25:
26: return 0;
27:}
1行目~9行目、18行目~27行目までは、過去に説明した内容となります。2 :
3 :int main(){
4 : int x = 3;
5 : int y = 2;
6 : double x2 = 3.0;
7 : double y2 = 2.0;
8 : int a,b,c,d,e;
9 : double d2;
10:
11: a = x+y;
12: b = x-y;
13: c = x*y;
14: d = x/y;
15: d2 = x2/y2;
16: e = x%y;
17:
18: printf("x = 3, y = 2\n");
19: printf("int x+y = %d\n",a);
20: printf("int x-y = %d\n",b);
21: printf("int x*y = %d\n",c);
22: printf("int x/y = %d\n",d);
23: printf("double x/y = %5.3f\n",d2);
24: printf("int x%%y = %d\n",e);
25:
26: return 0;
27:}
11行目~16行目で計算をし、その値を、a~eに代入するという作業をしています。
24行目のx%%yというのは、表示のときに見やすくするというか、しっかり「x%y」と表示されるようにするためのものですから、あまり気にしないでください。
ここで、演算子=についての説明をしておこうと思います。
「えっ、単にイコール(=)じゃないの?」という声が聞こえてきそうですね。
実は、C言語における=とは、右辺の値を左辺に代入するという記号になります。
こう説明をすると、なんだか数学チックで分かりづらいでしょうね。
砕いて説明するなら、=の右側で計算して出てきた値(もしくは、単に数字が書いてあればその数字の値)を左の文字の値とするという感じですかね。
「えっ、単にイコール(=)じゃないの?」という声が聞こえてきそうですね。
実は、C言語における=とは、右辺の値を左辺に代入するという記号になります。
こう説明をすると、なんだか数学チックで分かりづらいでしょうね。
砕いて説明するなら、=の右側で計算して出てきた値(もしくは、単に数字が書いてあればその数字の値)を左の文字の値とするという感じですかね。
例えば、a=3、b=2のときを考えてみましょう。
答えを先に行っておくと、a=2、b=3、c=3となります。
これは、数学とはちょっと違った答えになりますよね。
そもそも、上の計算を数学的に見ていくと、2行目が「3=2」となってしまい、「計算できないぞ!?この式は間違っている!」という事態に陥ってしまいます。
c = a; a = b; b = c;ということをプログラムで書くと、プログラムを実行した後のa,b,cの値どうなるでしょう?
答えを先に行っておくと、a=2、b=3、c=3となります。
これは、数学とはちょっと違った答えになりますよね。
そもそも、上の計算を数学的に見ていくと、2行目が「3=2」となってしまい、「計算できないぞ!?この式は間違っている!」という事態に陥ってしまいます。
では、説明したように、右辺の値を左辺に代入するという視点で、上の計算を見てみましょう。
まず、1行目で、右辺のa(=3)という値を、左辺のcに代入します。
ここで、a=3、b=2、c=3となります。
ここで、a=3、b=2、c=3となります。
次に2行目で、右辺のb(=2)という値を、左辺のaに代入します。
そのときに、もともとaの値であった3はなくなってしまい、新しく、aには2という値が入ります。
ここで、a=2、b=2、c=3となります。
そのときに、もともとaの値であった3はなくなってしまい、新しく、aには2という値が入ります。
ここで、a=2、b=2、c=3となります。
最後に、3行目で、右辺のc(=3)という値を、左辺のbに代入します。
2行目のaの値のときと同じように、もともとbの値であった2という値はなくなり、新しく、bには3という値が入ります。
そうして、a=2、b=3、c=3となるわけですね。
2行目のaの値のときと同じように、もともとbの値であった2という値はなくなり、新しく、bには3という値が入ります。
そうして、a=2、b=3、c=3となるわけですね。
最後に、14行目と15行目の説明について。
なぜ、わざわざ2種類の方法で割り算を書いたのかということです。
これは、プログラムを実行してもらえればわかると思うのですが、14行目の計算結果は1、15行目の計算結果は1.5という答えになります。
なぜでしょうか?
これは、前回説明した、変数の型という話が関わってきます。
なぜ、わざわざ2種類の方法で割り算を書いたのかということです。
これは、プログラムを実行してもらえればわかると思うのですが、14行目の計算結果は1、15行目の計算結果は1.5という答えになります。
なぜでしょうか?
これは、前回説明した、変数の型という話が関わってきます。
14行目の計算、これは、両方とも、整数型(int)で計算をして、答えを整数型(int)の文字に代入しています。
整数型というのは、その名の通り整数の計算になるので、小数以下の数字が出てきた場合には、全部カットされてしまいます。
なので、計算結果が1となってしまったわけですね。
整数型というのは、その名の通り整数の計算になるので、小数以下の数字が出てきた場合には、全部カットされてしまいます。
なので、計算結果が1となってしまったわけですね。
対して、15行目の計算、これは、実数型(double)で計算し、答えを実数型(double)の文字に代入しています。
実数型は、小数以下の数字がでてきても、(ある程度ではありますが)しっかりと計算をして答えを出してくれます。
なので、計算結果が1.5となってくれたわけですね。
実数型は、小数以下の数字がでてきても、(ある程度ではありますが)しっかりと計算をして答えを出してくれます。
なので、計算結果が1.5となってくれたわけですね。
このように、整数型と実数型を使い分けなければいけない場面というのがでてくるわけですね。
では、今回の練習問題!
上の説明では、整数型同士の計算をして整数型の文字に値を代入したり、実数型同士の計算をして実数型の文字に代入したりしました。 では、整数型同士の計算をした結果を実数型に代入したり、実数型同士の計算をして整数型の文字に代入したり、整数と実数の計算をしてみた場合にはどうなるでしょうか? 上のプログラムをちょっと変えるか、もしくは、上のプログラムに数行新しい行を付け加えて、それらの計算をして、その結果を見てみましょう! (keisan2.c)