2016-11-12 67 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