48

所以在python中,我所要做的就是

print(3**4) 

这给了我 81

我如何在 C 中做到这一点?我搜索了一下并说出了exp()功能,但不知道如何使用它,提前谢谢

4

7 回答 7

79

您需要标题中的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 的系统中。

于 2013-09-11T06:04:07.287 回答
14

你可以pow(base, exponent)使用#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);
}
于 2013-09-11T06:22:22.530 回答
11
#include <math.h>


printf ("%d", (int) pow (3, 4));
于 2013-09-11T06:04:49.803 回答
9

C 中没有用于这种用法的运算符,但有一系列函数:

double pow (double base , double exponent);
float powf (float base  , float exponent);
long double powl (long double base, long double exponent);

请注意,后两者只是自 C99 以来标准 C 的一部分。

如果您收到如下警告:

“内置函数‘pow’的不兼容隐式声明”

那是因为你忘记了#include <math.h>

于 2013-09-11T06:01:00.963 回答
5

对于另一种方法,请注意所有标准库函数都使用浮点类型。您可以像这样实现整数类型函数:

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;
}

这有效地重复了多次,但通过使用位表示减少了这一位。对于低整数幂,这是非常有效的。

于 2013-09-11T06:34:22.337 回答
4

只需使用pow(a,b),这正是3**4在 python 中

于 2013-09-11T06:00:49.410 回答
4

实际上,在 C 中,您没有幂运算符。您将需要手动运行一个循环来获得结果。即使是 exp 函数也只能以这种方式运行。但如果您需要使用该功能,请包含以下标头

#include <math.h>

然后你可以使用 pow()。

于 2013-09-11T06:01:29.557 回答