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

floatr;r=3.14;3.14是以double型存在的吗?系统提示"constdoubletofloat可能丢失数据”,那么浮点型常量3.14显然是不会丢失数据的(... 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.
展开
 我来答
黄邦勇帅哥哥
2010-07-23 · TA获得超过3986个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:430万
展开全部

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

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

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

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

参考资料:

ytu_math
2010-07-23 · TA获得超过1558个赞
知道小有建树答主
回答量:784
采纳率:100%
帮助的人:764万
展开全部
在C语言中,带有小数点的数值是按 double 参与计算的,不能以 float 类型参与计算,如果你要确认用float,则一定要用强制转换符进行转换。

float r;
r=(float)3.14;

C的自动转换是由小往大转, double --》 float ,是由打往小转,因此必须用转换符才行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luopeng0404
2010-07-23 · TA获得超过120个赞
知道答主
回答量:123
采纳率:0%
帮助的人:0
展开全部
不会有问题的 直接用吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Maori4575
2010-07-23 · 超过14用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:29万
展开全部
这个可以不用理会的~~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
warmwormn
2010-07-23 · TA获得超过737个赞
知道小有建树答主
回答量:1694
采纳率:0%
帮助的人:1296万
展开全部
r=3.14f;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式