如何提升到的力量

时间:2014-01-01 20:04:30

标签: c math

我是C的新手

我正试图将某些东西置于某种力量之下

例如。 5 ^ 3 = 125;

但是当我编码时

#include <math.h>
...

printf("%d", 5^3);

我得到6.我做了一些根本错误的事情吗?

5 个答案:

答案 0 :(得分:16)

^是C中的按位XOR运算符。

5在二进制表示中为1013011。所以101 XOR 011 = 110,即十进制6

您想要的是pow(5,3)(包括math.h之后可用)。但请注意,它作用于双精度而不是整数,因此返回值将是浮点数,通常不精确。如果需要精确的整数取幂,则必须使用其他库或实现自己的幂函数。这并不难,对于算法,请参阅exponentiation by squaring。标准C不包括整数取幂的函数。无论如何使用整数求幂,重要的是要处理overflows,这可能已经发生在小输入值上。

同样要打印返回的double,您必须将double转换为int printf("%d", (int)pow(5,3))或将其打印为浮点printf("%f", pow(5,3))

答案 1 :(得分:3)

^是C中的XOR运算符。

相反,您应该使用pow中的math.h功能,但pow会返回双

#include <math.h>
...

printf("%d", (int)pow(5, 3));

答案 2 :(得分:2)

您应该使用pow(5,3)

您在那里使用按位XOR(^)运算符:在二进制文件中101 ^ 0111106(你当前的答案)在否定。

答案 3 :(得分:2)

C 中有没有指数运算符(幂)。 ^使用的是C语言中的按位XOR运算符。执行5^3将返回6,而不是125。对于取幂,您可以使用标准库函数pow 签名:

double pow(double x, double y);  

标题:

#include <math.h>  

更改

printf("%d", 5^3);  

printf("%d",(int)pow(5,3));  

在C ++中不要使用<math.h>。相反,您可以使用<cmath>

答案 4 :(得分:0)

其他人已经建议使用pow中的math.h函数,因为^不是执行权限的正确运算符。另外,您也可以编写自己的电源功能,以获得乐趣。

int power(int base, int exp)
{
    int result = 1;
    while(exp) 
    {   
        result = result * base; 
        exp--; 
    }
    return result;

内部主要:

printf("%d\n", power(5,3));

在这种情况下,您不必使用强制转换运算符,因为pow()不适用于int。