等效C函数,结果不同

时间:2016-11-12 15:51:25

标签: c

我有一个非常简单的C程序,由以下函数组成:

int digit(int num)
{ 
    return num/(10*10*10);
}

呼叫数字(2345)返回2 - 正如预期的那样。

但是,如果我按以下方式编写函数(在我看来 - 相当于!!):

int digit2(int num)
{ 
    return num/(10^3);
}

然后拨打digit2(2345),这回复260! ...这对我来说似乎完全疯了! 我在每种情况下使用以下参数进行编译:     gcc -std = c99 -Wall -Wextra -Wpedantic -Werror

这到底是怎么回事??? !!!!!

2 个答案:

答案 0 :(得分:3)

10^3表示 10 XOR 3 ,而 10表示电源3

要将某个数字提升到某个数字,请使用math.h中的pow(number, power)。虽然在你的情况下,这可能有点过分,因为pow足够复杂,可以将浮点数提升到浮点数,但你可以将数字乘以它自己。

答案 1 :(得分:1)

10 ^ 3表示xor - 您需要pow函数 - 请参阅https://linux.die.net/man/3/pow