2016-11-12 31 views
0

我有一个非常简单的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

'10^3'意味着'10 XOR 3',这是'9'。 –

+0

如何在C中将一个数字提高到X的幂次? –

+3

[为什么我的权力运营商(^)不工作?](https://stackoverflow.com/questions/4843304/why-is-my-power-operator-not-working) –

回答

3

10^3装置10 XOR 3,不10到电源3

要提高某些功率,请使用math.h中的pow(number, power)。虽然在你的情况下这可能是矫枉过正,因为pow已经足够复杂以便将浮动浮动到浮动状态,但是你可以将数字与自身相乘。

+0

这是一个大学任务和我'不允许导入库,所以我不能使用pow函数...不可能简单地使用10 * 10 * 10 ...我怎么能够获得10的结果x的幂C? 是不是有一些运算符等于^在python中? –

+1

@steady_progress,好吧,Python的权力运算符是'**',而不是'^':最后一个仍然代表XOR。在C中,你可以自己乘一个数字,要么使用'pow',要么自己写一个算法。 – ForceBru