如何提升到的力量

use*_*744 9 c math

我是C的新手

我试图把某些东西放到某种东西的力量上

例如.5 ^ 3 = 125;

但是当我编码

#include <math.h>
...

printf("%d", 5^3);
Run Code Online (Sandbox Code Playgroud)

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

Nab*_*bla 17

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

5101二进制表示,3011.所以101 XOR 011 = 110,这是6十进制的.

你想要的是什么pow(5,3)(可以math.h像你一样包括在内).但请注意,它对双精度而非整数起作用,因此返回值将是浮点数,通常不精确.如果需要精确的整数取幂,则必须使用其他库或实现自己的幂函数.这并不难,因为算法通过平方取幂.标准C不包括整数取幂的函数.无论如何,使用整数求幂,处理溢出很重要,溢出可能已经发生在小输入值上.

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

  • @ user3139744; 是.但是不要强制转换`malloc`的返回值.它应该是`'b = malloc(sizeof(int)*((a)+1));`. (2认同)