问答详情
源自:2-8 自动类型转换

为什么在第13行用%lf也不是%f

#include <stdio.h>

int main()

{

    char c='a';

    int n=97;         //将c赋值给n

    float f;     //将c赋值给f

    double d;     //将c赋值给d

    n=c;

    f=n;

    d=f;

    printf("%d\n",n);

    printf("%f\n",f);

    printf("%lf\n",d);

    return 0;    

}


提问者:Tinyu_Zhao 2016-06-10 19:38

个回答

  • aleave
    2016-07-03 10:38:56

    因为double比float表示的值大。lf的意思是long float,也就是长浮点型。

  • qq_一大杯冰柠檬汽水_03560599
    2016-06-27 17:27:54

    我也不懂


  • abyssknight
    2016-06-10 21:12:36

    %f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。
    其中:
    float,单精度浮点型,对应%f.
    double,双精度浮点型,对应%lf.

    在用于输出时:
    float类型可以使用%lf格式,但不会有任何好处。
    double类型如果使用了%f格式可能会导致输出错误。

    在用于输入时:
    double 类型使用了%f格式,会导致输入值错误。
    float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。

    所以在输入输出时,一定要区分好double和float,而使用对应的格式符号。