C语言中的%f和%lf的格式符的区别

因为据说c语言的printf要比C++中的cout要快很多(当然我试了一下,输出了10000行,大约有1/15的差距,不是很大)。
我在cpp文件中运行这段程序发现不会输出正确结果

#include<stdio.h>
const double pi=3.14;
int main()
{
    double r=3;
    double s;
    scanf("%lf",&r);
    s=r*r*pi;
    printf("%f\n",s);
    scanf("%lf",&r);
    s=r*r*pi;
    printf("%lf",s);
    return 0;
}

第一次输入可以正确输出,第二次不会正确输出,我又查了一下,发现C语言**scanf()**中float的格式符对应的是%f,double的格式符对应的是%lf;而printf()的格式符float和double都是%f。所以这个这段代码的第二次输出会出现错误。
可以.c文件中尝试一下,你会发现两个都是可以输出的。

发布了17 篇原创文章 · 获赞 16 · 访问量 1155

猜你喜欢

转载自blog.csdn.net/XYshaonianhaofang/article/details/104119228