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)
в противном случае вы можете столкнуться с последствиями, которые иногда приводят к неожиданным результатам, так как компилятор неявно выполняет сужающие преобразования. Проверьте здесь опасность неявных преобразований.