過去ログ
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)
早速の回答、ありがとうございました。
無事、警告なく実行できました。
あつかましいのですが、これからも
ご指導いただけたらと思います。
どうぞよろしくお願いします。