プログラミング実習

プログラミング論
第八回
算術演算子
本日の内容

算術演算子
– 優先順位
– インクリメント演算子,デクリメント演算子
加減乗除を行う


加減乗除を行うときは,算術演算子を用います。
算術演算子は,次の通りです。
演算子
+
*
/
%
説明
加算
減算
乗算
除算
余り
例
a=b+c;
a=b-c;
a=b*c;
a=b/c;
a=b%c;
算術演算子の注意点




整数値同士で除算を行うと,小数点以下
は切り捨てられる。
整数に対して%演算を使用すると,余り
を求めることができる。
0で除算を行うことはできない。
整数と実数を混ぜて計算すると,答えは
実数表現になる。
算術演算子の優先順位



*, / は,+, - より先に計算されます。
( )で囲むと,その中が先に計算されま
す。
同じ優先順位(*や/)の算術演算子が連
続する場合は,左側から先に計算されま
す。
– a/b/cの場合は,まず,a/bが計算され,その
結果とcの除算が計算されます。
演習

次の計算結果を予測しなさい。
ensyu14.cを実行し結果を確認しなさい。
int
n =
n =
n =
n =
n =
n;
2 * 3 + 4 * 5;
16 / 3 – 6 / 2;
23 % 5 * 3;
2 * ( 3 + 4 ) / 2;
3 * ( 100 + ( 5 – 3) / 2);
考えてみましょう
5  4  (3  1)
23

右の式は,プログラ
ム上ではどのように
表現されると思いま
すか?

下のプログラムは,どんな式を意味していると
思いますか?
5  (2  1)  3 / 8  3  7
インクリメント演算子と
デクリメント演算子



プログラムの中で,「1だけ加算」「1だけ減算」と
いうのは,よく使います。
特に繰り返しの処理で。詳しくは後日。
C言語では,これらのために,特別なコンパクト
な記述ができます。
aの値を1だけ加算
a=a+1;
a++ または ++a
同様に,「1だけ減らす」は,a--, --a
インクリメント演算子と
デクリメント演算子

次のプログラムの動作を確認しましょう。(ensyu15.c)
#include <stdio.h>
int main(void)
{
int a = 5;
a=a+1;が実行されます
a++;
再度a=a+1;が実行されます
++a;
printf("a=%d\n",a);
}
a++と++aの違い

次のプログラムを実行してみましょう。ensyu16.c
// ensyu16.c ++aとa++の違い
#include <stdio.h>
int main(void)
{
int a,b;
a=5;
b=++a;
printf("b=%d a=%d\n",b,a);
a=5;
b=a++;
printf("b=%d a=%d\n",b,a);
}
a++と++aの違い

実行結果はこうなります。
b=++a;の結果
b=6 a=6
b=a++;の結果
b=5 a=6
Press any key to continue
なぜ,結果がちがうのでしょう???
b=++a;の意味は。

結果から予想されることは,
「aの値が1加算された後にbに代入された」
ということです。
つまり
a = a + 1;
b = a;
と同じです
それでは,b=a++;の意味は。

結果から予想されることは,
「aの値がbに代入された後に,aの値が1加算された」
ということです。
つまり
b = a;
a = a + 1;
と同じです
演習

kadai3.cのプログラムを完成させてください。
– int型変数としてaを宣言し,初期値として30を与
え,これを二進数に変換して表示するプログラ
ムです。
– 2で割って,その余りを配列d[]に入れていきま
す。d[0]が二進数の最下位桁とします。
– 先に筆算で二進数を求め,その通りの計算をプ
ログラムしてみてください。
考え方
十進数30を二進
数に変換する。
2 ) 30
2 ) 15 ・・0
2 ) 7 ・・1
2 ) 3 ・・1
1 ・・1
結果: 1 1 1 1
d[0]=a%2;
a=a/2; aは15になる
d[1]=a%2;
a=a/2; aは7になる
d[2]=a%2;
a=a/2; aは3になる
0
d[4],d[3],d[2],d[1],d[0]
d[3]=a%2;
d[4]=a/2;
演算子:その他

変数aに10を代入する
a = 10;

変数bに変数aの値を代入する
b = a;
1文で書けないかな?
このように書けます!
b = a = 10;
この優先順位で
計算されます。
演習


ensyu17.cで,b=a=10;の代入文の働き
を確認してください。
a=5; b=5; c=5; のような,同じ値を代入
する代入文は,1文で表現できます。この
代入文を,b=a=10;を参考にして考えて
みましょう。
インクリメント演算子,デクリメ
ント演算子の演習

次の代入文を実行した後の変数aとbの値を予想しなさい。
プログラムを作成し確認しなさい。
計算
答え
例題
a=50; ++a;
a=51
問題1
a=50; b=++a;
a=
b=
問題2
a=66; b=a++;
a=
b=
問題3
a=30; b=--a;
a=
b=
問題4
a=31; b=a--;
a=
b=