ページ 1 / 1
独習Cの練習問題_4_6_2の正答の理解について
Posted: 2012年12月26日(水) 16:51
by パクパク
[1] 質問文
[1.1] 自分が今行いたい事は何か
>下記、独習Cの練習問題_4_6_2の正答だと「3.000000」とあるのですが、私は「3.33333……」と答えました。
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
コード:
#include <stdio.h>
int main(void)
{
float f;
f = 10 / 3;
printf("%f" , f);
return 0;
}
[1.4] 今何がわからないのか、知りたいのか
>(1)なぜ「3.000000」と表示され、「3.33333……」と表示されないのかを教えて下さい。
(2)どのように書いたら「3.33333……」と表示されるか、なるべく簡単なコードを教えて下さい。
[2] 環境
[2.1] OS : Windows
[2.2] コンパイラ名 : VC++ 2010
[3] その他
・どの程度C言語を理解しているか
初めて言語を勉強しており、独習Cを読み進めている者です。
Re: 独習Cの練習問題_4_6_2の正答の理解について
Posted: 2012年12月26日(水) 17:00
by nil
独習Cを持っていないため
問題文を確認できないので
問題文を載せていただければ詳細にお答えできるかと思います。
因みに当方の環境では3.0...と表示されました。
[補足]
float型の変数fに右辺値10/3が代入されるわけですが、
10も3もint型の定数であるため、小数点以下が切り捨てられるので、
fには3が代入されます。
その状態でfを出力するので3.0...と表示されます。
Re: 独習Cの練習問題_4_6_2の正答の理解について
Posted: 2012年12月26日(水) 17:06
by beatle
パクパク さんが書きました: (2)どのように書いたら「3.33333……」と表示されるか、なるべく簡単なコードを教えて下さい。
と直します。
Re: 独習Cの練習問題_4_6_2の正答の理解について
Posted: 2012年12月26日(水) 17:31
by box
パクパク さんが書きました:
(2)どのように書いたら「3.33333……」と表示されるか、なるべく簡単なコードを教えて下さい。
コード:
f = 10 / 3.;
printf("%f\n", f);
f = 10. / 3;
printf("%f\n", f);
f = 10. / 3.;
printf("%f\n", f);
f = 10 / 3.0;
printf("%f\n", f);
f = 10.0 / 3;
printf("%f\n", f);
f = 10.0 / 3.0;
printf("%f\n", f);
オペランド(上の例では10と3)の少なくとも片方が浮動小数点数であれば、
割り算の結果も浮動小数点数となります。
fには3.333333...が入ります。
まあ、見た目が美しいのは3番目かいちばん下でしょうか。
わざわざ片方「だけ」浮動小数点数にすることにさほど意味があるとは思いません。個人的には。
Re: 独習Cの練習問題_4_6_2の正答の理解について
Posted: 2012年12月26日(水) 17:39
by パクパク
ご返信ありがとうございます。
問題文は、 [1.2] どのように取り組んだか(プログラムコードがある場合記載) に書いたプログラムの表示結果がどうなるか、という問題です。
この節は代入文での型変換がテーマだったのですが、[1.2]の型変換がわかっておりませんでした。お教え頂きありがとうございます。
上記のこともあり、接尾子を使うという発想が思い浮かびませんでした。また、この節の意図としては、おそらく片方だけ浮動少数点数にするのは正しいような気がします。ちなみに私は一番下が好きです。
次回からはもう少し粘ってから質問してみようと思います。重ねて、ありがとうございます。