Scanf for double在Dev C ++中不起作用

时间:2014-12-26 13:44:03

标签: c printf double scanf

我遇到浮点数问题。我认为这里发生了一些冲突。

输出结果为:

Screenshot of the output

我的代码:

#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,首先,如果以前没有读过,我必须多次清除回车符。所以,如果有任何替代方案,那么告诉我。其次,输出结果是......

4 个答案:

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