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);