5

我已经pow用C中的传统声明方式声明了函数。但是,函数的输出不正确。我不需要在此处包含 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。请帮帮我。

4

1 回答 1

5

传统的声明不起作用,为什么?

因为没有原型,您提供的这两个整数不会转换为pow实际接受的双精度数。对于“传统”声明,您必须煞费苦心地确保您提供的参数类型与函数所期望的完全一致,否则您的程序中将出现未定义的行为。

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

于 2019-10-03T05:43:43.133 回答