黑马程序员技术交流社区

标题: %lf和%f [打印本页]

作者: 紮西诺尔布    时间: 2015-4-9 00:53
标题: %lf和%f
为什么scanf函数在接收double型数值时,要用%lf占位符,而不能用%f  ?
作者: ccjlxq    时间: 2015-4-9 01:44
同问,我也不会
作者: 大家叫我小祥子    时间: 2015-4-9 08:47
好像是说,最新版的要%lf
作者: 梦想中前行    时间: 2015-4-9 08:54
double是双精度的浮点型数据,你接收的话,必须要用字节数够长的%ld,其实就是long double类型。
作者: guanguan0622    时间: 2015-4-9 08:56
doubule双精度,scanf用%lf,prinftf可以用%f!!!
作者: caishipi    时间: 2015-4-9 08:59
%lf是long长型,因为double是双精度型实型,所以要用long,我是这么理解的
作者: 波阿波    时间: 2015-4-9 09:03
double 是lf  float是f
作者: 枫宇翔    时间: 2015-4-9 09:11
一个是单精度,一个是双精度啊
作者: xiniuniu    时间: 2015-4-9 09:13
double类型数据占用64位宽度的内存,而float类型数据占用32位宽度的内存。如果用%f接收一个double类型的参数很有可能会产生截断,导致错误的结果。。。类似于削足适履。。懂了吧
作者: 紮西诺尔布    时间: 2015-4-9 21:46
梦想中前行 发表于 2015-4-9 08:54
double是双精度的浮点型数据,你接收的话,必须要用字节数够长的%ld,其实就是long double类型。 ...

long不是只是用来修饰int型数据吗,没听说拿来修饰浮点型数据啊?
作者: 糊涂娃    时间: 2015-4-9 21:57
l代表long的意思把
作者: 优客L-D-C    时间: 2015-4-9 22:41
%f只能接收4个字节的数据,而double是8个字节,所以要用%lf
作者: 鹏jiqing    时间: 2015-4-9 22:49
long double类型的,简写就是lf
作者: 王昱    时间: 2015-4-9 23:37
以前不是说用f也可以的么.
作者: 365616804    时间: 2015-4-9 23:42
是的,%f是单精度小数
作者: 丶浩浩丶    时间: 2015-4-10 00:53
我记得好像x6.1的时候还不要,不知道是不是我记错了.
输出用%f就可以吧
作者: 梦想中前行    时间: 2015-4-10 08:13
紮西诺尔布 发表于 2015-4-9 21:46
long不是只是用来修饰int型数据吗,没听说拿来修饰浮点型数据啊?

long double 是浮点型的一种,不过不常用,一般字节数为8或16,有效字节为15、19对应8、16
作者: 紮西诺尔布    时间: 2015-4-11 23:30
梦想中前行 发表于 2015-4-10 08:13
long double 是浮点型的一种,不过不常用,一般字节数为8或16,有效字节为15、19对应8、16 ...

哦,原来是这样啊!!!非常感谢!!!多多指导!!!!
作者: chenzuliang1993    时间: 2015-4-11 23:39
没有必要深究,知道占位符类型与接收内容的变量类型不符就会出错了行了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2