c语言中浮点型常量问题?

float r;
r=3.14;
3.14是以double型存在的吗?
系统提示"const double to float 可能丢失数据”,那么浮点型常量3.14 显然是不会丢失数据的(float是7位有效数字),它才三位,要不要理会提示,会出错的话请举列说明。
运算的两个数中有一个数为float或double,结果为double,因为所有float都按double型进行运算。
以上是书中所写,请给解释一下。还有我的第二个问题

第二、为什么float与float,或与int等运算时,得到float? 不是说计算时float会转换为double才运算吗,结果怎么不是double.

3.14默认是在double形式存在的,这是规定,就像法律一样,只能死记,没有道理而言。r是float型,转换为double型会有丢失数据的可能,但是编译器并不能完全确定,到底会不会丢失数据,因此,出名对你的安全,编译器会给你一个警告,当然3.14这样的数肯定不会丢失,可以不用理会他这条警告。

当不同类型的表达式和变量混合使用一个表达式时,它们将被转换为同一类型。

转换后每对操作数都成为同一类型,运算结果后的类型与转换后的结果相同。

转换规则为.只要两个操作数中有一个是double型的,则另一个会转换为double型.否则只要有一个是float型的,另一个会转换为float型.否则,有一个是long型的,另一个会转换为long型.否则两个操作数都会转换为int型.其转换规则如下图.

参考资料:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-23
在C语言中,带有小数点的数值是按 double 参与计算的,不能以 float 类型参与计算,如果你要确认用float,则一定要用强制转换符进行转换。

float r;
r=(float)3.14;

C的自动转换是由小往大转, double --》 float ,是由打往小转,因此必须用转换符才行。
第2个回答  2010-07-23
不会有问题的 直接用吧
第3个回答  2010-07-23
这个可以不用理会的~~~~
第4个回答  2010-07-23
r=3.14f;

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网