ヒント
int型の変数に値を10回読み込んで,合計値を保存するint型の変数sumに合計値が保存されたとしよう。
すなわちsumは整数型変数で,10個の入力値の合計が入っていたとする。
「sum/10」の計算を行うと「整数型÷整数型」の演算なので,小数点以下は捨てられてしまう。
小数点以下が計算の時に捨てられてしまうので,計算結果をdouble型変数に保存しても,小数点以下の部分は復活しない。
「 (double)sum/10.0
」の計算を行うと,これは「実数型÷実数型」の演算になり,小数点以下も残っている。
ここで「 (double)sum
」というのは,整数型変数sumをdouble型変数として扱えという意味になる。
この計算結果をint型変数にしまったら,また小数点以下の部分が捨てられてしまうため,演算結果はdouble型変数に保存しなければ意味がなくなる。 計算結果はdouble型変数に保存すべきである。
すなわち
int x; /*値読み込み用整数型変数*/
int sum; /*合計値を保存する変数*/
double average; /*平均値を保存する変数*/:途中省略
average = (double)sum/10.0;
printf("average=%lf\n",average);
とすればよい。「 (double)sum 」のように,ある型の変数を,一時的に別の型の変数のように扱うことをキャストという。