对于这个东西,出现了这个警告:'*=' : truncation from 'const double ' to 'float ',为什么会这样?

如题所述

在 C 语言中,如果不指定数据类型,那么小数常量会被认为是 double 类型的。
因此在你的初始化中

a* = 2.9;

这一句,a是 float 类型的,但是 2.9 是 double 类型的,由于它是常量,所以编译器称为 const double。double 是不能隐式转换为 float 的。

你可以这样修改解决:a *= 2.9f; // 强制将2.9作为单精度

希望对你有帮助,望采纳谢谢。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-01
这个警告可以不用理会,因为VC编译器默认的浮点数类型为double,你使用不会有错误,不影响执行结果。
如果不希望出现警告,这样写就可以了:
a*=2.9f;
第2个回答  2013-07-22
常数2.9 编译器是作为双精度浮点数处理的,这样在a*2.9后是个双精度的结果,赋予单精度的变量a就是出现上面这个警告。
a *= 2.9f; // 强制将2.9
相似回答