C言語関係掲示板

過去ログ

No.340.warning C4305: '=' :'const double ' から'float'へ切り詰めます。

[戻る] [ホームページ]

No.2157

warning C4305は何のことでしょうか
投稿者---ペロ(2002/07/23 15:17:52)


 このHPの練習問題をやってみました。
演習2−2ですが、
warning C4305: '=' :'const double ' から'float'へ切り詰めます。
と警告が出てしまいます。これはなぜでしょうか。
b=23.3のところを示すようなのですが。
VC++6.0を使っております。

No.2159

Re:warning C4305は何のことでしょうか
投稿者---ともじ(2002/07/23 15:44:16)


こんにちは。

>演習2−2ですが、
>warning C4305: '=' :'const double ' から'float'へ切り詰めます。
>と警告が出てしまいます。これはなぜでしょうか。
>VC++6.0を使っております。

この演習は、いろいろな型の宣言を使ってみましょう、
という趣旨の問題なのですが、
 float a, b;
 a = 62.5;
 b = 23.3;
の部分で、コンパイラのチェックが厳しいと、warningが出ますね。

warningの理由なのですが、小数点が付いている定数はコンパイラが
double型であると判断するのですが、double型の定数を
float型の変数に代入しようとしているので、
「'const double ' から'float'へ切り詰めます。」がいいですか、
と警告するわけです。double型の方が精度が高いので、精度が落ちますよ、
というわけなのです。

回避方法ですが、
http://www9.plala.or.jp/sgwr-t/c/sec13.html#s13-4
で説明しているように、
 a = 62.5F;
 b = 23.3F;
とし、接尾語Fを付け、float型の定数であることを明示してください。


No.2160

解決しました
投稿者---ペロ(2002/07/23 16:44:46)


早速の回答、ありがとうございました。
無事、警告なく実行できました。
あつかましいのですが、これからも
ご指導いただけたらと思います。
どうぞよろしくお願いします。