独習Cの練習問題_4_6_2の正答の理解について

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

独習Cの練習問題_4_6_2の正答の理解について

#1

投稿記事 by パクパク » 13年前

[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を読み進めている者です。

nil
記事: 428
登録日時: 14年前

Re: 独習Cの練習問題_4_6_2の正答の理解について

#2

投稿記事 by nil » 13年前

独習Cを持っていないため
問題文を確認できないので
問題文を載せていただければ詳細にお答えできるかと思います。
因みに当方の環境では3.0...と表示されました。

[補足]
float型の変数fに右辺値10/3が代入されるわけですが、
10も3もint型の定数であるため、小数点以下が切り捨てられるので、
fには3が代入されます。

その状態でfを出力するので3.0...と表示されます。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 独習Cの練習問題_4_6_2の正答の理解について

#3

投稿記事 by beatle » 13年前

パクパク さんが書きました: (2)どのように書いたら「3.33333……」と表示されるか、なるべく簡単なコードを教えて下さい。

コード:

f = 10 / 3.0f;
と直します。

box
記事: 2002
登録日時: 15年前

Re: 独習Cの練習問題_4_6_2の正答の理解について

#4

投稿記事 by box » 13年前

パクパク さんが書きました:  (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の正答の理解について

#5

投稿記事 by パクパク » 13年前

ご返信ありがとうございます。

問題文は、 [1.2] どのように取り組んだか(プログラムコードがある場合記載) に書いたプログラムの表示結果がどうなるか、という問題です。
この節は代入文での型変換がテーマだったのですが、[1.2]の型変換がわかっておりませんでした。お教え頂きありがとうございます。

上記のこともあり、接尾子を使うという発想が思い浮かびませんでした。また、この節の意図としては、おそらく片方だけ浮動少数点数にするのは正しいような気がします。ちなみに私は一番下が好きです。

次回からはもう少し粘ってから質問してみようと思います。重ねて、ありがとうございます。

閉鎖

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