Pow:多载函数的不明确调用

3

我有问题,但找不到任何解决方法。

它会显示相同的错误:

Pow:对重载函数的调用不明确

#include <stdio.h>
#include <math.h>

int main() 
{
    int a, i, n, product, result=1;

    printf("enter a number\n");
    scanf("%d", &a);

    printf("enter n number\n");
    scanf("%d", &n);

    for(i = 1; i < n; i++) {
        product = pow(a, i);
        result *= product;
    }
    printf("the result is %d", result);

    return 0;
}

1
你必须初始化 result=1,否则它会使用垃圾值。 - Punit Vara
10
你现在正在编译C++代码,请切换到C语言模式。 - BLUEPIXY
1
所选的C++重复并没有很好地解释这里的失败。建议重新开放。 - chux - Reinstate Monica
1
如果将此帖子视为标记为C,则解决方案包括使用具有类似于C++重载的类型通用数学<tgmath.h>。我同意这肯定是在C代码上使用C++编译器的OP。在使用pow()并过滤C时遇到问题的用户将无法找到该重复项,因为它是另一种语言。 C中的候选解决方案与C ++不同,因此我仍然断言所声称的重复项是一个糟糕的候选项。 - chux - Reinstate Monica
显示剩余13条评论
1个回答

0
主要问题是未初始化的变量,即result在以下行中没有有效值可用:
result *= product;  

在使用函数pow()时,可能会发生一些隐式转换。目前没有重载的pow()实例包含以intint为第一和第二参数,以及以int为返回值的情况。
根据支持的函数参数列表,您应该考虑适当定义您的参数,在C中,可以使用头文件math.h
double pow(double x, double y)

否则,您可能会遭受意外结果的后果,因为编译器会隐式地执行缩小转换。请检查隐式转换的危险此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接