leahlee1214
leahlee1214
采纳率100%
2016-06-30 03:10

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条回答

  • qq_29491663 sange_XB990 5年前

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

    点赞 评论 复制链接分享
  • NK_test NK_test 5年前

    double应该用lf吧,不是1

    点赞 评论 复制链接分享
  • yang004 engineer-yang 5年前

    我用的gcc 4.4.7,只是结果不同,没有出现乱码的情况。

    float:
    98
    -12.778

    double:
    98
    -17.778

    点赞 评论 复制链接分享

相关推荐