Xcode-从长期到长期的隐式转换值从10,000,000,000,000变为1,575,856,128

时间:2015-10-21 04:00:03

标签: ios objective-c

我尝试使用非常大的值(10 Trillin)但是在iPhone 4s上运行应用程序时它会将值更改为1,575,856,128。但是它在iPhone 5及更高版本上运行良好。

我所做的就是宣布

long number1;

然后将其设置为等于值

number1 = 10000000000000

1 个答案:

答案 0 :(得分:0)

取决于器件总线的频率和宽度是否为32位/ 64位。

  • 在32位环境中为4个字节,最大正值为long = 2 ^ 32/2 - 1 = 2147483647

  • 在64位环境中为8个字节,最大正值为long = 2 ^ 64/2 - 1 = 9223372036854775807

参考:https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/Major64-BitChanges/Major64-BitChanges.html

在32位环境中,如果传递的长值大于2147483647(< 10000000000000)。它会被截断

long long 在32位/ 64位环境中都是8个字节(所以可以保持值高达9223372036854775807)