Swift中Int和Int32有什么区别?

时间:2014-12-12 09:02:48

标签: ios swift int

Core Data中,您可以存储Int16Int32Int64,但它与Int不同。它们存在的原因是什么,你如何使用它们?

4 个答案:

答案 0 :(得分:68)

根据Swift Documentation

  

内部

     

在大多数情况下,您无需选择要在代码中使用的特定大小的整数。 Swift提供了一个额外的整数类型Int,它与当前平台的本机字大小相同:

     

在32位平台上,Int与Int32的大小相同。

     

在64位平台上,Int与Int64的大小相同。

     

除非您需要使用特定大小的整数,否则请始终在代码中使用Int作为整数值。这有助于代码一致性和互操作性。即使在32位平台上,Int也可以存储-2,147,483,648和2,147,483,647之间的任何值,并且对于许多整数范围来说足够大。

答案 1 :(得分:3)

" Int"之后的数字是指它使用了多少位。当你使用int来做一些非常简短或几乎不必要的事情时,比如列表中跟随特定参数的对象数量的运行计数,我通常使用UInt8,这是一个最大值为256的整数(2 ^ 8),最小值为0,因为它是无符号的(这是UInt8和Int8之间的差异)。如果签名,(或者没有" U"为变量添加前缀)那么它可以是负数。 Int16,Int32和Int64也是如此。使用较小尺寸的Int类型的奖金不是很大,所以如果你不想要的话,你真的不需要使用它们。

答案 2 :(得分:2)

如果您在使用32位或64位处理器的笔记本电脑或iOS设备上运行,则不会节省性能。只需使用Int。当你使用Int8时,CPU不会只使用8位,无论你使用什么,CPU都会使用它的整个位宽,因为硬件已经在芯片中...

现在如果你有一个8位CPU,那么使用Int32将需要编译器做一堆后空翻和魔术技巧来让32位Int工作

答案 3 :(得分:0)

  

在32位平台上,Int与Int32的大小相同,在64位平台上,Int与Int64的大小相同。

  • Int32:4个字节:从−2147483648到+2147483647
  • Int64:8个字节:从−9223372036854775808到+9223372036854775807

来自http://iossupportmatrix.com/的非常好的矩阵,您可以在其中找到特定设备的处理器架构。

例如,如果您制作

Int(Date().timeIntervalSince1970 * 1000)

它在iPhone 5(32位拱门)上引发致命错误:Thread 1: Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max。但是在iPhone 5S(62位拱门)上,一切都很好。

enter image description here

了解更多here