永发信息网

为什么写 scanf("%f",&r); 程序就错了,而写scanf("%lf",&r);就对了呢?输入的r是1.5 h是3,求解

答案:4  悬赏:60  手机版
解决时间 2021-01-14 05:16
  • 提问者网友:趣果有间
  • 2021-01-13 15:57
为什么写 scanf("%f",&r); 程序就错了,而写scanf("%lf",&r);就对了呢?输入的r是1.5 h是3,求解
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-01-13 16:29
因为你定义的变量r,h都是double类型的,如果你输入的时候用%f,那么可能编译能通过,但是会有警告,运行的时候就会出现问题,因为你要是按%f输入一个浮点类型的数,那么存储变量的时候,每个变量会占四个字节,而当你用到变量时,是double类型的,会出去八个字节,这八个字节可能四个是你输入的,剩下的那四个就是属于垃圾数据了,所以不行,而当你用%lf输入时,存储是八个字节,用的时候也是八个字节,所以就没问题了。追问嗯,知道了。但是 c程序设计 谭浩强 这本书上说不管是float还是double 都可以用%f输入的,这是怎么回事呢,难道书错了?追答说实话,那本书很坑爹的,现在都说不怎么好,我建议你看一下C primer plus 这个还不错,我最近就在看
全部回答
  • 1楼网友:想偏头吻你
  • 2021-01-13 18:07
你定义的是double类型啊
  • 2楼网友:爱难随人意
  • 2021-01-13 17:48
数据类型不匹配
  • 3楼网友:往事隔山水
  • 2021-01-13 17:43
因为你定义的是double型数据,%lf的意思是long float,如果你数据定义为float,那么用%f就是对的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯