%lf 与%f的区别有:
1、所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38,双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
2、有效数字位数不同
单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。
3、代表的数据类型不同
%f代表单精度浮点型数据(float),%lf代表双精度浮点型数据(double)。在程序中处理速度不同一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快。
例,以标识符列表方式定义函数:
#include
void f(a, b)
int a;
float b;
{
printf("%d, %f\n", a, b);
}
int main()
{
f();
f(1);
f(2, 3.14);
return 0;
}
参考资料来源:百度百科—c语言
对于以小数形式输出单、双精度数,用%lf和%f输出效果是一样的,因为系统默认输出的小数位只有6位,除非你指定了输出的小数位数,比如:%10.15f(会输出15位小数)。字符l是用于长整型整数的!