Scanf for double在Dev C ++中不起作用
我遇到浮点数问题。 我觉得这里有些事情发生了冲突。
输出是:
我的代码:
#include 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,首先,如果以前没有读过,我必须多次刷回回车。 所以,如果有任何替代方案,那么告诉我。 其次输出是这个…
使用
scanf("%lf", &y);
代替。 自scanf("%f", &y);
仅适用于float
。
如果启用编译器警告,它会告诉您格式说明符"%f"
需要float *
而不是double *
参数。
使用错误的格式说明符调用未定义的行为 ,这就是您获得意外结果的原因。 一旦调用UB,您可能会得到预期或意外的结果。 什么都不能说。
使用%lf
读取double
%lf
数据。
您在scanf
中使用了错误的格式说明符,这样做会导致UB (未定义的行为)。 double
精度的正确格式说明符是%lf
而浮点数的格式说明符是%f
。 所以只需将您的scanf
更改为
scanf("%lf",&y);
你应该用
scanf("%lf", &y);