2014-11-21 28 views
2

我想在C++中表示一些大數字。在下面的代碼中,如果只試圖打印s,編譯器就不會抱怨。但如果嘗試進行一些乘法運算並將其存儲在t中,編譯器會說integer overflow in expression...如何在C++中表示大數字

我試圖使其成爲unsigned long long t,但編譯器仍然抱怨。在沒有任何溢出的情況下進行這種乘法有什麼辦法嗎?

int main() 
{ 
    long long int s = 320718425168; 
    long long int t = 4684688*68461; //4684688*68461 = 320718425168 

    return 0; 
} 
+3

使用「大號」庫。如果你真的要用遠超「長期」範圍的數字來工作,那麼它們就存在着。 – PaulMcKenzie 2014-11-21 21:46:07

+0

不,我不想使用任何庫(外部庫) – user3764893 2014-11-21 21:47:23

+0

然後重新實現一個bignum庫.. – 2014-11-21 21:47:39

回答

7

用作產品的因素文字是int類型,它不能代表產物。

首先將其中一個因素歸爲long long

long long t = (long long)4684688 * 68461; 

或使用相應的字面後綴llLL改變文字類型。即

long long t = 4684688LL * 68461; 

Demo