C中有关double,float变量赋值的错误

时间:2016-07-20 14:20:31

标签: c

#include <stdio.h>

int main(void)
{
    double height; //Error happens if I write double height instead of float height! 
    printf("Height(inch): ");
    scanf("%f",&height);
    printf("%f inch = %f cm \n",height,height*2.54);
}

正如您在评论中看到的,如果我写双倍高度而不是浮动高度,则会发生错误!我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

%f的{​​{1}}格式说明符需要指向scanf的指针,而不是float。这很重要,因为两者的尺寸不同。传入double的地址将导致一些但不是所有包含double的字节都被填充,从而导致未定义的行为。

要将值读入double,请使用double

%lf