A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紮西诺尔布 中级黑马   /  2015-4-9 00:53  /  1739 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么scanf函数在接收double型数值时,要用%lf占位符,而不能用%f  ?

19 个回复

倒序浏览
同问,我也不会
回复 使用道具 举报
好像是说,最新版的要%lf
回复 使用道具 举报
double是双精度的浮点型数据,你接收的话,必须要用字节数够长的%ld,其实就是long double类型。
回复 使用道具 举报
doubule双精度,scanf用%lf,prinftf可以用%f!!!
回复 使用道具 举报
%lf是long长型,因为double是双精度型实型,所以要用long,我是这么理解的
回复 使用道具 举报
double 是lf  float是f
回复 使用道具 举报
一个是单精度,一个是双精度啊
回复 使用道具 举报
double类型数据占用64位宽度的内存,而float类型数据占用32位宽度的内存。如果用%f接收一个double类型的参数很有可能会产生截断,导致错误的结果。。。类似于削足适履。。懂了吧
回复 使用道具 举报
梦想中前行 发表于 2015-4-9 08:54
double是双精度的浮点型数据,你接收的话,必须要用字节数够长的%ld,其实就是long double类型。 ...

long不是只是用来修饰int型数据吗,没听说拿来修饰浮点型数据啊?
回复 使用道具 举报
double是长字节浮点型 需要用%lf 。 %f 默认是float类型的。
回复 使用道具 举报
l代表long的意思把
回复 使用道具 举报
%f只能接收4个字节的数据,而double是8个字节,所以要用%lf
回复 使用道具 举报
long double类型的,简写就是lf
回复 使用道具 举报
以前不是说用f也可以的么.
回复 使用道具 举报
是的,%f是单精度小数
回复 使用道具 举报
我记得好像x6.1的时候还不要,不知道是不是我记错了.
输出用%f就可以吧
回复 使用道具 举报
紮西诺尔布 发表于 2015-4-9 21:46
long不是只是用来修饰int型数据吗,没听说拿来修饰浮点型数据啊?

long double 是浮点型的一种,不过不常用,一般字节数为8或16,有效字节为15、19对应8、16
回复 使用道具 举报
梦想中前行 发表于 2015-4-10 08:13
long double 是浮点型的一种,不过不常用,一般字节数为8或16,有效字节为15、19对应8、16 ...

哦,原来是这样啊!!!非常感谢!!!多多指导!!!!
回复 使用道具 举报
没有必要深究,知道占位符类型与接收内容的变量类型不符就会出错了行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马