C语言,double类型的变量使用scanf()函数赋值后再使用printf()输出,为什么和输入的值不同?

#include<stdio.h>voidmain(){doublex;scanf("%f",&x);printf("%f\n",x);}输入1输出的结果:-925596... #include <stdio.h>
void main( )
{ double x;
scanf("%f", &x);
printf("%f\n", x);
}

输入1
输出的结果:
-92559604281615349000000000000000000000000000000000000000000000.000000
展开
 我来答
lgao622
2015-09-15 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6544
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
  1. c语言中double输入输出,都用 %lf 进行格式化,是否写成了 %f, 这个是float类型。

#include <stdio.h>

int main()
{
    double d = 0;
    printf("intput a double:");
    scanf("%lf", &d);
    printf("d = %lf\n", d);
    return 0;
}

2. 字符定义如下

字符 对应数据类型 含义

d / i int 接受整数值并将它表示为有符号的十进制整数,i是老式写法

o unsigned int 无符号8进制整数(不输出前缀0)

u unsigned int 无符号10进制整数

x / X unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)

f(lf) float(double) 单精度浮点数用f,双精度浮点数用lf(尤其scanf不能混用)

e / E double 科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写

g / G double 使用以上两种中最短的形式,大小写的使用同%e和%E

c char 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符

s / S char * / wchar_t * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

p void * 以16进制形式输出指针

n int * 到此字符之前为止,一共输出的字符个数,不输出文本

% 无输入 不进行转换,输出字符‘%’(百分号)本身

m 无 打印errno值对应的出错内容,(例: printf("%m\n"); )

百度网友c0588c1
推荐于2017-09-17 · TA获得超过522个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:58.5万
展开全部

精度不够  截断了吧


改成这样


#include <stdio.h>
void main( )
{  double x;
   scanf("%lf", &x);
   printf("%lf\n", x);
 }

%f是输入float型时用的

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-06-25 · TA获得超过718个赞
知道小有建树答主
回答量:1179
采纳率:0%
帮助的人:593万
展开全部
float是4个字节,而double是8个字节,如果你要写入double你就必须写入8个字节,4个字节的写入使得另外4个字节就是随机数字,可以用long float来替代double因为他也是8个字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逐梦兮乐
2013-06-25 · TA获得超过6431个赞
知道大有可为答主
回答量:5151
采纳率:72%
帮助的人:1761万
展开全部
#include<stdio.h>
void main()
{
double x;
scanf("%lf", &x);
printf("%lf\n", x);
}
双精度double要用%lf,不信,你试一试。祝你愉快!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-06-25
知道答主
回答量:7
采纳率:0%
帮助的人:5.5万
展开全部
因为double不能用%f来控制输入和输出,应该用%ld来控制输入和输出。

#include <stdio.h>
void main( )
{ double x;
scanf("%ld", &x);
printf("%ld\n", x);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式