C 语言printf时,%f 与%lf 有什么区别, 难道不是double 用%lf, float 用%f?

为什么实际操作中,doublea;a=cos(3.14);printf("%f",a);这三行,用%f,出来是0.9999,用%lf,出来是0.00000?... 为什么实际操作中,
double a;
a = cos(3.14);
printf("%f", a); 这三行,用%f,出来是0.9999, 用%lf, 出来是0.00000?
展开
 我来答
帐号已注销
推荐于2017-10-07 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1246万
展开全部
我用VC++14.0和Dev C++5.11编译后都没出现你说的这种情况。

%l %lf对printf函数来说是没有区别,因为传递给C语言可变参数函数的float类型变量都会被隐式提升为double, 所以这里的%f和%lf的效果是一致的。
但是对于scanf,%f和%lf的含义就不一样了,因为传递的是指针。

一般建议对于float类型使用%f,double类型使用 %lf
追问
我现在用的是codeblocks自带的mingw,为什么会出现这种情况呢?
百度网友bbd7a5e
2015-06-28 · 超过13用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:25.6万
展开全部
估计是编辑器的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式