ID非公開

2021/2/28 17:29

33回答

C言語のint と float型 int a; float answer; scanf("%d", &a); // 今回は、100 answer = 20 / a; printf("%f", answer); // 0.000000

C言語関連34閲覧

ベストアンサー

0

ID非公開

質問者

2021/2/28 19:17

なるほど!とてもわかりやすいです。ありがとうございます。

ThanksImg質問者からのお礼コメント

皆さんありがとうございました!

お礼日時:3/4 22:49

その他の回答(2件)

0

整数型の計算結果は整数型になり、浮動小数型の計算結果は浮動小数型になります。パソコン内というと CPUの演算ユニットの話を聞いてるのかもしれませんが、とにかく、この理由で 20/a は 0.2 ではなく、0 になります。 answer = 20/a の answer は float 型変数です。20/a (=0) は整数型です。 このため、0 を浮動小数に変換して 0.0 として answer に代入します。 printf で 0.000000 が表示されるのは %f のデフォルトの書式が 6桁精度のためです。

ID非公開

質問者

2021/2/28 19:17

ありがとうございます。参考にさせていただきます!

0

int同士の演算結果はintです。 20 はint なのでintをintで割った結果=0が計算された後、answerに入るのです。 answer = 20.0 / a; とするとaがintでもdoubleに格上げされて計算されますので、期待通りの結果になるはずです。

ID非公開

質問者

2021/2/28 19:16

ありがとうございます。 float型でなくて、doubleに格上げされるのですか?