C言語での3整数の平均値の小数表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
トレージャー

C言語での3整数の平均値の小数表示

#1

投稿記事 by トレージャー » 15年前

初めまして。私、C言語入門者クラスの者です。

このC言語プログラムの平均値aveを小数点で出したいのですが、
aveに小数用のキャスト演算子かけているのに整数値で出てしまうのです…
どこに問題があるかご教授お願い頂けますでしょうか…?

OSはXP
コンパイラはAOKのC言語を始めよう!
です。

/*3つの整数値を読み込んで合計値と平均値を表示*/

#include<stdio.h>
int main(void)
{
int na,nb,nc;
int sum;/*合計値*/
double ave;/*平均値*/

puts("3つの整数を入力してください。");
printf("整数A:"); scanf("%d",&na);
printf("整数B:"); scanf("%d",&nb);
printf("整数C:"); scanf("%d",&nc);

sum=na+nb+nc;
ave= (double)sum/3; /*キャスト*/

printf("それらの合計は%5dです。\n",sum);
printf("それらの平均は%5.lfです。\n",ave);

return(0);

}

組木紙織

Re:C言語での3整数の平均値の小数表示

#2

投稿記事 by 組木紙織 » 15年前

sum/3

sum/3.0


解説をすると
sum/3 の部分は(整数)/(整数)の計算となるので(整数)で結果が帰ってきます。
この時点で結果は整数になります。

それを実数型にキャストしたら。整数の値を持つ実数型になります。

トレージャー

Re:C言語での3整数の平均値の小数表示

#3

投稿記事 by トレージャー » 15年前

組木紙織さん、ご回答ありがとうございます。
大変良く分かりました。この場合キャストしても同じなのですね。
つまり参考書の誤植だったのですね…
迅速かつ的確なご回答ありがとうございましたm(__)m

フリオ

Re:C言語での3整数の平均値の小数表示

#4

投稿記事 by フリオ » 15年前

 
 キャスト演算子 () は、除算演算子 / より優先度が高いので
ave= (double)sum/3;
で問題ありません。

表示が整数になるのは、
printf("それらの平均は%5.lfです。\n",ave);
の、精度が空になっているので %5.0lf と解釈されたからです。
画像

たかぎ

Re:C言語での3整数の平均値の小数表示

#5

投稿記事 by たかぎ » 15年前

本当に書籍に書いていたコードなのでしょうか?
だとすると、その書籍のコードは一通り疑ってかかった方がよいかもしれません。
http://www.kijineko.co.jp/tech/supersti ... ouble.html

toyo

Re:C言語での3整数の平均値の小数表示

#6

投稿記事 by toyo » 15年前

Lの小文字と数字の1は紛らわしいですよね
子供の教科書見たら容積を表すリットルも大文字表記になってました
ミリリットル=mL
ということで1とlの誤植かも

閉鎖

“C言語何でも質問掲示板” へ戻る