社区
C语言
帖子详情
scanf("%lf", &i);与scanf("%f", &i);的区别
azhen
2005-11-08 08:55:14
我写了这样一个程序
double i;
scanf("%f", &i);
printf("%f", i);
如果我输入的是5,为什么输出的是0.0000呢?
如果使用scanf("%lf",&i);可以得到正确的结果,为什么呢?
...全文
3454
12
打赏
收藏
scanf("%lf", &i);与scanf("%f", &i);的区别
我写了这样一个程序 double i; scanf("%f", &i); printf("%f", i); 如果我输入的是5,为什么输出的是0.0000呢? 如果使用scanf("%lf",&i);可以得到正确的结果,为什么呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
azhen
2005-11-09
打赏
举报
回复
能不能从内存分配上面解释这个现象呢?
我不太明白scanf("%f");和scanf("lf")内存是怎么分配的?
一般情况下,float是分配4个单元的内存,double是分配8个单元的内存
但这些内存里面是有哪些部分分配给小数部分,哪些给指数部分呢?
richu
2005-11-09
打赏
举报
回复
厉害。又学了一招。
默默努力的小熊
2005-11-09
打赏
举报
回复
这么细心啊,强
newbiestar
2005-11-09
打赏
举报
回复
这个……楼主需要去参考IEEE754浮点规范了
简单点说,float是1位符号,8位阶码,23位有效数字;double是1位符号,11位阶码,52位有效数字
你这个如果用gcc的-Wall参数来进行编译的话,gcc其实是会给你提示你搞错了的……
> cat float_scanf.c
#include <stdio.h>
int main(void)
{
double val;
scanf("%f", &val);
}
> gcc -Wall float_scanf.c
float_scanf.c: In function `main':
float_scanf.c:6: warning: float format, double arg (arg 2)
float_scanf.c:7: warning: control reaches end of non-void function
Ksion2005
2005-11-08
打赏
举报
回复
向你们学习
Mr_Yang
2005-11-08
打赏
举报
回复
up
shellzie
2005-11-08
打赏
举报
回复
精度不一样
bombwang
2005-11-08
打赏
举报
回复
学习
m0792
2005-11-08
打赏
举报
回复
确切的说输出的是一个小数点后有6位的双精度型数据吧,就象x.000 000
skfox
2005-11-08
打赏
举报
回复
类型不匹配,我在vc6.0的环境下都是一堆乱七八糟的数据
用%d就可以了
sankt
2005-11-08
打赏
举报
回复
1
%f 对应的是float
%lf 对应的是double
llf_hust
2005-11-08
打赏
举报
回复
double i;//因为i是double类型,必须要用%lf格式
scanf
(“%
lf
“, &a)和sum =
scanf
(“%
lf
“, &a)的返回值的
区别
scanf
("%
lf
", &a)和sum =
scanf
("%
lf
", &a)的返回值的
区别
为什么printf()用%f输出double型,而
scanf
却用%
lf
呢?
《你必须知道的495个C语言问题》第12章标准输入输出库,本章的很多问题都跟...为什么printf()用%f输出double型,而
scanf
却用%
lf
呢? 示例:double x;
scanf
(“%f”,&x);输入“123.4”,输出x的值结果为0,没
关于double和float和int以及%f,%
lf
,%l
lf
,%
Lf
以及printf和
scanf
的总结
对于double类型的变量,printf()中的说明符可以用%f或%
lf
,而
scanf
()中的说明符则只能用%
lf
;对于float类型的变量,printf()中的说明符可以用%f或%
lf
,而
scanf
()中的说明符则只能用%f;建议不使用float变量,而使用...
double型printf(%f)可以正常输出,
scanf
必须使用%
lf
今天编写程序发现一个问题,double型使用printf("%f")和printf("%
lf
")都可以正常输出,而
scanf
必须使用%
lf
。 #include <stdio.h> #include <stdlib.h> #define PI 3.1415926 int main( ) { double r, h...
%
lf
和 %f 有什么
区别
%f告诉
scanf
函数在所传地址位置上存储一个float型值, 而%
lf
告诉
scanf
函数在所传地址位置上存储一个double型值。 这里float和double的
区别
是非常重要的。 如果给出了错误的转换说明,那么
scanf
函数将可能存储...
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章