簡體   English   中英

在C ++中使用哪種數據類型用於非常大的數字?

[英]Which data type to use for a very large numbers in C++?

我必須在我的程序中存儲號碼600851475143 我試圖將它存儲在long long int變量和long double ,但是在編譯它時會顯示錯誤

integer constant is too large for "long" type. 

我也嘗試過unsigned long long int 我正在使用MinGW 5.1.6在Windows上運行g ++。

我應該使用什么數據類型來存儲號碼?

long long很好,但你必須在文字上使用后綴。

long long x = 600851475143ll; // can use LL instead if you prefer.

如果ll放在文字的末尾,那么編譯器會假定您希望它是一個int ,在大多數情況下是一個32位帶符號的數字。 32位不足以存儲那么大的值,因此警告。 通過添加ll ,您向編譯器表明文字應該被解釋為long long ,它足夠大以存儲值。

后綴對於指定調用函數的重載也很有用。 例如:

void foo(long long x) {}
void foo(int x) {}

int main()
{
    foo(0); // calls foo(int x)
    foo(0LL); // calls foo(long long x)
}

你有使用long long int (或unsigned long long int )的正確想法,但為了防止警告,你需要告訴編譯器該常量是一個long long int

long long int value = 600851475143LL;

那些“L”可以是小寫的,但我建議反對它 - 取決於字體,小寫的“L”通常看起來很像一位數(“1”)。

看看GNU MP Bignum庫http://gmplib.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM