プログラミング論 第八回 算術演算子 本日の内容 算術演算子 – 優先順位 – インクリメント演算子,デクリメント演算子 加減乗除を行う 加減乗除を行うときは,算術演算子を用います。 算術演算子は,次の通りです。 演算子 + * / % 説明 加算 減算 乗算 除算 余り 例 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) 23 右の式は,プログラ ム上ではどのように 表現されると思いま すか? 下のプログラムは,どんな式を意味していると 思いますか? 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=
© Copyright 2025 ExpyDoc