Итак, в python все, что мне нужно сделать, это
print(3**4)
Что дает мне 81
Как это сделать в C? Я немного искал и сказал функцию exp()
, но понятия не имею, как ее использовать, заранее спасибо
Итак, в python все, что мне нужно сделать, это
print(3**4)
Что дает мне 81
Как это сделать в C? Я немного искал и сказал функцию exp()
, но понятия не имею, как ее использовать, заранее спасибо
Вам нужна функция pow();
из заголовка math.h
.
синтаксис
#include <math.h>
double pow(double x, double y);
float powf(float x, float y);
long double powl(long double x, long double y);
Здесь x является базовым, а y - показателем степени. результатом является x^y
.
использование
pow(2,4);
result is 2^4 = 16. //this is math notation only
// In c ^ is a bitwise operator
И не забудьте включить math.h
, чтобы избежать предупреждения ( "incompatible implicit declaration of built in function 'pow'
" ).
Свяжите математическую библиотеку, используя -lm
во время компиляции. Это зависит от вашей среды.
Например, если вы используете Windows, это не требуется для этого, но в системах на базе UNIX.
В C нет оператора для такого использования, но есть семейство функций:
double pow (double base , double exponent);
float powf (float base , float exponent);
long double powl (long double base, long double exponent);
Обратите внимание, что последние два являются частью стандарта C только с C99.
Если вы получите предупреждение, например:
"несовместимое неявное объявление встроенной функции 'pow'"
Это потому, что вы забыли #include <math.h>
.
#include <math.h>
printf ("%d", (int) pow (3, 4));
Для другого подхода обратите внимание, что все стандартные функции библиотеки работают с типами с плавающей запятой. Вы можете реализовать функцию целочисленного типа следующим образом:
unsigned power(unsigned base, unsigned degree)
{
unsigned result = 1;
unsigned term = base;
while (degree)
{
if (degree & 1)
result *= term;
term *= term;
degree = degree >> 1;
}
return result;
}
Это эффективно повторяет кратность, но сокращает это бит, используя представление битов. Для низких целых степеней это довольно эффективно.
вы можете использовать pow(base, power)
от #include <math.h>
или создать свой собственный:
int myPow(int x,int n)
{
int i; /* Variable used in loop counter */
int number = 1;
for (i = 0; i < n; ++i)
number *= x;
return(number);
}
просто используйте pow(a,b)
, который точно 3**4
в python
На самом деле в C у вас нет оператора электропитания. Вам нужно будет вручную запустить цикл, чтобы получить результат. Даже функция exp работает только таким образом. Но если вам нужно использовать эту функцию, включите следующий заголовок
#include <math.h>
то вы можете использовать pow().