当函数声明为传统风格时,为什么输出不正确?

When the declaration of the function is in a traditional style, why isn't the output correct?

我已经用C中传统的声明方式声明了函数pow,但是函数的输出不正确。我不需要在此处包含 math.h,因为我正在声明该函数并且它的目标代码已经存在。这是我的代码:

#include<stdio.h>

double pow();           //traditional declaration doesnt work, why??

int main()
{
    printf("pow(2, 3) = %g", pow(2, 3));
    return 0;
}

上面的输出是 1 而它应该是 8。请帮助我。

traditional declaration doesnt work, why??

因为没有原型,您提供的那两个整数不会转换为 pow 实际接受的双精度数。使用 "traditional" 声明时,您必须煞费苦心地确保提供的 与函数预期的参数类型完全相同 ,否则您的程序将出现未定义的行为。

这是支持原型并实际使用为标准函数提供原型的标准库头文件的原因之一。