为什么我的pow结果总是为零?

时间:2018-03-29 18:22:28

标签: c printf

在我的代码中,平方变量R总是给出零。 它是pow(R, 2)还是R*R并不重要。 为什么会这样? (如果我将它改为浮动,它可以工作,但我需要它是精度的双倍。)

这是代码:

int main () {

    double R,PI,a;
    PI = 3.14159;
    scanf(" %d", &R);
    a = PI * (pow(R,2));
    printf ( "A= %0.4d \n", a );

    return 0;

}

1 个答案:

答案 0 :(得分:2)

您在scanfprintf中使用了错误的格式说明符。

%d格式说明符需要int的{​​{1}}地址和scanf的{​​{1}}地址。而是分别传递intprintf的地址。使用错误的格式说明符会调用undefined behavior

您需要使用double中的double%lf中的scanf %f

printf