问题

我在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.请帮我.

  最佳答案

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

因为没有原型,你提供的两个ints不会转换为pow实际接受的双打.使用“传统”声明,你必须努力确保提供函数预期的参数类型,或者你将在程序中有自己未定义的行为.

这是偏好原型的一个原因,并且实际上使用为标准函数提供它们的标准库标头。

  相同标签的其他问题

cstdoutheader-filesobject-code