我对 C 很陌生
我正在尝试赋予某物力量
例如。 5^3=125;
但是当我编码时
#include <math.h>
...
printf("%d", 5^3);
我得到 6。我是不是做错了什么??
^
是 C 中的按位异或运算符。
5
在二进制表示中是101
,3
是011
。所以 101 XOR 011 = 110
,十进制表示为 6
。
您想要的是
pow(5,3)
(像您一样包含math.h
后即可使用)。但请注意,它作用于双精度数而不是整数,因此您的返回值将是浮点并且通常不精确。如果您需要精确的整数幂,那么您要么必须使用额外的库,要么实现自己的幂函数。这并不难,对于算法,请参阅通过平方求幂。标准 C 不包含整数求幂函数。无论如何,对于整数取幂,重要的是要注意溢出,对于小输入值可能已经发生这种情况。
还要打印返回的双精度数,您必须将双精度数转换为 int
printf("%d", (int)pow(5,3))
或将其打印为浮点 printf("%f", pow(5,3))
^
是 C 中的 XOR 运算符。
相反,您应该使用
pow
中的 math.h
函数,但是 pow
返回 double
#include <math.h>
...
printf("%d", (int)pow(5, 3));
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>
。
pow(5,3)
。您正在使用按位 XOR (
^
) 运算符:在二进制中是
101 ^ 011
,在十进制中是
110
,或
6
(您当前的答案)。
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。