我有點困惑C在多長時間工作。如何在C中使用Long數據類型?
如果我要求在Java中的long值的最大值,我會得到一個數字在quintillions中。如果我用C簽名或未簽名的話,它的數量是十億。
Java是建立在C ...所以差異來自哪裏?
我也試着用long long值,unsigned/signed long值和long int值來表示文字。他們似乎都沒有處理過數十億的數字。爲什麼?我犯了一個錯誤嗎?
我有點困惑C在多長時間工作。如何在C中使用Long數據類型?
如果我要求在Java中的long值的最大值,我會得到一個數字在quintillions中。如果我用C簽名或未簽名的話,它的數量是十億。
Java是建立在C ...所以差異來自哪裏?
我也試着用long long值,unsigned/signed long值和long int值來表示文字。他們似乎都沒有處理過數十億的數字。爲什麼?我犯了一個錯誤嗎?
C標準將long
定義爲至少與int
一樣大。實際大小取決於實現。 Java的情況並非如此,其中long
需要64位長。
C99標準定義了固定大小的整數類型,如stdint.h
中定義的int64_t
,您可以在所有平臺上使用固定大小的整數。
C也有long long
類型。那個保證至少是64位。
C99定義'long long int'爲最少能夠保存64位有符號整數並且大於'long int'的大小。它不一定是64位。 – 2011-12-24 13:55:52
@MehrdadAfshari,對,我不夠精確,謝謝,改變。 – 2011-12-24 13:59:23
@Mehrdad:你實際上說過,long long int的大小必須嚴格大於long int的大小。那是對的嗎?當然,一致性實現可以提供'long long int'與'long int'相同的大小; long long int的大小不能小於long int的大小。 – 2011-12-24 22:08:17
如果你想用更大的數字,您可以在這裏使用GNU MP Bignum的圖書館工作: http://gmplib.org/ 的數量和精度僅由運行在機器的可用內存的限制。
http://en.wikipedia.org/wiki/Integer_(computer_science) – 2011-12-24 04:29:54