leahlee1214 2016-06-30 03:10 采纳率: 100%
浏览 2380
已采纳

c语言,声明变量为double或float,为什么导致结果不一致

图片说明

#include

int main(){
double f,c;
scanf("%1f",&f);
c = (f-32.0)*5.0/9.0;
printf("%.3f",c);
return 0;
}

上述代码若用double声明,结果乱码
若使用float声明,则结果运行正确

之前有了解到float输出时是先转换为double型,再按%f输出
这里不清楚为什么单精度和双精度对结果会产生影响
编译器使用的是codeblocks

  • 写回答

3条回答 默认 最新

  • nervermore990 2016-06-30 03:30
    关注

    scanf("%1f",&f);你的这行是%1(一)f么?直接复制你的代码也遇到同样问题,我把它写成%l(L)f就没问题了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?