我試圖使用非常大的值(10 Trillin),但它在iPhone 4s上運行應用程序時將值更改爲1,575,856,128。不過,它在iPhone 5及更高版本上運行良好。Xcode-從long long到long的隱式轉換值從10,000,000,000,000到1,575,856,128
我所做的只是申報
long number1;
然後將其設置等於值
number1 = 10000000000000
我試圖使用非常大的值(10 Trillin),但它在iPhone 4s上運行應用程序時將值更改爲1,575,856,128。不過,它在iPhone 5及更高版本上運行良好。Xcode-從long long到long的隱式轉換值從10,000,000,000,000到1,575,856,128
我所做的只是申報
long number1;
然後將其設置等於值
number1 = 10000000000000
這取決於設備的總線頻率和寬度是32位/ 64位。
在32位環境長是4個字節,長最大正值= 2^32/2 - 1 = 2147483647
在64位環境長是8字節,long的最大正值= 2^64/2 - 1 = 9223372036854775807
在32位環境中,如果您傳遞的值長於2147483647(< 10000000000000)。它會被截斷
但長長是在32位/ 64位環境8個字節(因此能保持值高達9223372036854775807)
變化'number1'到'長long'取代'長'。 – rmaddy
現在的問題是,我試圖使用NSUserDefaults存儲此值,現在我得到隱式轉換失去了整數精度。 NSUserDefaults是否不存儲正確的數字? – FifthRBM
'NSUserDefaults'不直接支持long long值。你可以把'long long'包裝在'NSNumber'中,並將'NSNumber'存儲在'NSUserDefaults'中。 – rmaddy