Есть несколько вариантов:
В C, решение заключается в простом приведении целых чисел к удвоениям:
pow((double)i, (double)j)
В C ++ вы можете сделать то же самое, хотя вы должны использовать приведение в стиле C ++:
pow(static_cast<double>(i), static_cast<double>(j))
Но лучше использовать перегрузку, предоставляемую C ++:
std::pow(static_cast<double>(i), j);
Основание все еще должно быть значением с плавающей запятой, но показатель степени может быть целым, по крайней мере,
Префикс std ::, вероятно, не нужен (большинство компиляторов также делают функцию доступной в глобальном пространстве имен).
Конечно, чтобы получить доступ к версиям функции на C ++, вы должны включить версию заголовка на C ++.
Так что вместо #include <math.h>
вам нужно #include <cmath>
C ++ предоставляет версии C ++ для каждого заголовка C, используя это соглашение об именах. Если заголовок C называется foo.h
, версия C ++ будет cfoo
. Когда вы пишете на C ++, вы всегда должны отдавать предпочтение этим версиям.