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? 展开
double a;
a = cos(3.14);
printf("%f", a); 这三行,用%f,出来是0.9999, 用%lf, 出来是0.00000? 展开
2个回答
展开全部
我用VC++14.0和Dev C++5.11编译后都没出现你说的这种情况。
%l %lf对printf函数来说是没有区别,因为传递给C语言可变参数函数的float类型变量都会被隐式提升为double, 所以这里的%f和%lf的效果是一致的。
但是对于scanf,%f和%lf的含义就不一样了,因为传递的是指针。
一般建议对于float类型使用%f,double类型使用 %lf
%l %lf对printf函数来说是没有区别,因为传递给C语言可变参数函数的float类型变量都会被隐式提升为double, 所以这里的%f和%lf的效果是一致的。
但是对于scanf,%f和%lf的含义就不一样了,因为传递的是指针。
一般建议对于float类型使用%f,double类型使用 %lf
追问
我现在用的是codeblocks自带的mingw,为什么会出现这种情况呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询