#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);
}
正如您在评论中看到的,如果我写双倍高度而不是浮动高度,则会发生错误!我的代码出了什么问题?
答案 0 :(得分:2)
%f
的{{1}}格式说明符需要指向scanf
的指针,而不是float
。这很重要,因为两者的尺寸不同。传入double
的地址将导致一些但不是所有包含double
的字节都被填充,从而导致未定义的行为。
要将值读入double
,请使用double
。
%lf