我遇到浮点数问题。我认为这里发生了一些冲突。
输出结果为:
我的代码:
#include <stdio.h>
int main(){
double y;
printf("enter a decimal number: ");
scanf("%f", &y);
printf("%f\n", y);
fflush(stdin);
getchar();
return 0;
}
我正在使用Dev C ++ 4.9.9.2,首先,如果以前没有读过,我必须多次清除回车符。所以,如果有任何替代方案,那么告诉我。其次,输出结果是......
答案 0 :(得分:3)
使用
scanf("%lf", &y);
代替。由于scanf("%f", &y);
仅适用于float
。
如果启用编译器警告,它会告诉您格式说明符"%f"
需要float *
而不是double *
参数。
答案 1 :(得分:2)
使用错误的格式说明符调用undefined behavior,这就是您获得意外结果的原因。一旦调用UB,您可能会得到预期或意外的结果。什么都不能说
使用%lf
阅读double
类型数据。
答案 2 :(得分:1)
您在scanf
中使用了错误的格式说明符,这样做会导致UB(未定义的行为)。double
的正确格式说明符为%lf
而浮点数是%f
。所以只需将scanf
更改为
scanf("%lf",&y);
答案 3 :(得分:1)
你应该使用
scanf("%lf", &y);