Pow: неоднозначный вызов перегруженной функции

У меня есть проблема, я не могу найти никакого решения.

Это дает ту же ошибку:

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 это не имеет допустимого значения для использования в строке:

result *= product;  

а затем некоторые неявные преобразования в использовании функции pow(), Там не перегружен pow() экземпляр, содержащий int а также int в качестве первого и второго параметра, и int как возвращаемое значение.

Вы должны рассмотреть возможность определения своих аргументов соответствующим образом в соответствии со списком поддерживаемых функций, который в C использует заголовок math.h является:

double pow(double x, double y)

в противном случае вы можете столкнуться с последствиями, которые иногда приводят к неожиданным результатам, так как компилятор неявно выполняет сужающие преобразования. Проверьте здесь опасность неявных преобразований.

Другие вопросы по тегам