2009-10-11 79 views
0

可以使用power函數來計算pow(200,200)等非常大的值的功率。 也可以用於很長的長整型值... pow(long long int,long long int)。g ++編譯器中包含的g ++功能函數

我收到此錯誤 /sources/tested.cpp:在函數 '廉政的main()':

/sources/tested.cpp:16:錯誤:重載「戰俘的調用(長長整型&,長長詮釋&)」不明確

/usr/include/bits/mathcalls.h:154:注:候選是:雙POW(雙,雙)

/usr/lib中/ GCC/i486-linux/4.0.1 /../../../../include/C++/4.0.1/cmath:360: 注意:long double std :: pow(long double,int)

/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:356:注意:浮動的std :: POW (浮動,INT)

/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:352:注意: double std :: pow(double,int) /usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:348:注意:long double std :: pow(long double,long double)

/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/ 4.0.1/cmath:344:note:float std :: pow(float,float)

回答

4

如果你想要做任意p重新計算數學,你需要爲它獲得一個圖書館。很可能,您的平臺沒有足夠大的數據類型來實現本地化。檢查出GNU MP

+1

+1,看起來這就是他想要做的 – orip 2009-10-11 21:09:36

1

正如您從錯誤消息中看到的那樣,沒有pow函數適用於兩個long long int值。編譯器會嘗試自動將long long int值轉換爲其他值(doublelong等)。但它不能明確地決定採取哪種功能。

不能使用標準pow函數來計算非常大的數字,如pow(200, 200),因爲結果不會在pow函數定義的任何數據類型適合 - 你會得到一個溢出或其他「錯誤的答案。

+0

其spoj錯誤,但是當我在我的系統上運行相同時,它工作正常 – d3vdpro 2009-10-11 20:58:23

+0

什麼工作正常?你可以編譯'pow(200,200)',但是你能得到正確的答案嗎? – Jesper 2009-10-11 20:59:25