C语言里scanf中,%lf和%f区别是什么?我这么写的。 double a; scanf(“%

C语言里scanf中,%lf和%f区别是什么?我这么写的。
double a;
scanf(“%f”,&a);
这样输出了垃圾值,改成scanf(“%lf”,&a);就好了,求解……

%f 是浮点型(单精度),占4字节
%lf 是浮点型(双精度),占8字节
scanf 按格式化字符串指定类型将用户输入的内容转换,然后写到指定的地址。两种类型存储方式,所占内存不同,类型错误自然会得到错误结果。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-29
double是双精度,double有8个字节,float只有4个字节
lf可以理解成long f
第2个回答  2015-11-27
如果是 float a ; 用 scanf("%f",&a);
如果是 double a ; 用 scanf("%lf",&a);
建议都用 double
第3个回答  2014-12-29
恭喜你,你是对的追问

啊?这个……帮忙解释下

C语言里scanf中,%lf和%f区别是什么?我这么写的。 double a; scanf...
f 是浮点型(单精度),占4字节 lf 是浮点型(双精度),占8字节 scanf 按格式化字符串指定类型将用户输入的内容转换,然后写到指定的地址。两种类型存储方式,所占内存不同,类型错误自然会得到错误结果。

c语言编程中%lf和%f,有啥区别,什么double,长短型,求大神解释
作scanf的输入控制字符串时,%lf是双精度,8字节;%f是单精度,4字节;——也就是%lf对应double型就是,%f对应float型变量,用错了运行结果就出错。double的长型是10字节,精确到19位,double型是8字节,精确到16位,未见过“短double”型。但好多编译器下写long double仍是8字节,就是说没有区分...

C语言问题%f和%lf的区别
主要有一下四点区别:1、代表的数据类型不同 f代表单精度浮点型数据(float),%lf代表双精度浮点型数据(double)。2、有效数字位数不同 单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。3、所能表示数的范围不同 单精度浮点的表示范围:-3.40E+38 ~ +3.40E...

c语言中% if和% f的区别
c语言是%if对应double,%f对应float。scanf():“%lf”用于double类型,“%f”用于float类型printf():“%f”既可用于double类型,也可用于float类型,意思是指“保留6位小数”。f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。其中:float,单精度浮点型,对应%f。double,双精度...

C语言中 %f 与%lf 有什么区别?能否举一个简单易懂的例子?初学者,在线...
f 般对应单精度类型 float lf 般对应双精度类型 double f是单精度浮点型,输出的时候要满足6位小数。lf就是输出数值总长度为L,整数个数加小数个数,不足补空,右顶格起

c语言中%f与%lf有什么区别?
一、输入不同 1、%lf\\n:%lf\\n输入数据时要求是float类型。2、%f\\n:%f\\n输入数据时要求是double类型。二、输出不同 1、%lf\\n:double类型以%lf\\n格式输出数据时不会自动转成%lf\\n格式,会导致输入值错误。2、%f\\n:float类型以%f\\n格式输出数据时会自动转成%f\\n格式,不会导致输入值错误...

利用scanf时什么时候用%f和%lf
f就是float,lf就是long float,所以当你要输入float类型的数值时就用%f,当你要输入double类型数值时就用%lf

利用scanf时什么时候用%f和%lf
f就是float,lf就是long float,所以当你要输入float类型的数值时就用%f,当你要输入double类型数值时就用%lf

为什么double类型输入(scanf)用%lf,输出(printf)用%f?
理解double类型输入(scanf)与输出(printf)分别使用%lf和%f的用法,关键在于理解float与double数据类型及其在内存中的存储方式。float和double是两种不同的浮点数类型。float是单精度浮点数,double是双精度浮点数,通常占用更多的内存空间,即double比float多4个字节。%f用于格式化float类型数据的输入和输出,而...

...有什么区别, 难道不是double 用%lf, float 用%f?
我用VC++14.0和Dev C++5.11编译后都没出现你说的这种情况。l %lf对printf函数来说是没有区别,因为传递给C语言可变参数函数的float类型变量都会被隐式提升为double, 所以这里的%f和%lf的效果是一致的。但是对于scanf,%f和%lf的含义就不一样了,因为传递的是指针。一般建议对于float类型使用%f,...

相似回答