printf("%lf",x);和printf("%f",x);有什么区别,还有下面还注释了一个问题,帮我解释一下吧,谢谢。

#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c,d;
printf("Year,Capital:\n");
scanf("%lf%lf",&a,&b); //这边如果把 lf 改成 f,则运行结果为0.000000,我不知道为什么?
d=1.0225*b;
c=pow(d,a);
printf("Deposit:%f\n",c);
}

lf是长精度类型, 用于读取(和显示) double (双精度)类型,
f是精度类型, 用于读取(和显示) float (单精度)类型,

在程序中, a, b均为双精度类型, 因此如果用%f的话, 就会由于类型错误而导致读取失败, 因此a=0,b=0。

因而结果c = 0;

希望对你有帮助
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-26
double变量必须使用lf,float变量必须使用f,否则结果都不正确。
第2个回答  2010-09-26
lf为双精度输出,有15-16位有效数字,f为单精度输出,有6-7位有效数字。
相似回答