[英]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.