嗯,首先是这样的类型int
, float
, double
, long
, and short
are C原始类型,而不是 Objective-C。您可能知道,Objective-C 是 C 的超集。 Objective-CNSNumber
是所有这些类型的包装类。
因此,我将回答您有关这些 C 原语以及 Objective-C 如何解释它们的问题。基本上,每个数字类型都可以分为以下两个类别之一:整数类型 and 浮点类型.
整数类型
它们只能存储整数(整数),并且具有两个特征:size and 签名性.
Size表示一种类型需要计算机中多少物理内存来存储,即多少字节。从技术上讲,为每种类型分配的确切内存取决于实现,但有一些保证:(1) char
永远是 1 个字节(2) sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
.
签名性意味着,简单地说,该类型是否可以表示负值。所以一个有符号整数,或者int
,可以表示一定范围的负数或正数(传统上为 –2,147,483,648 到 2,147,483,647),以及一个无符号整数,或者unsigned int
可以表示相同范围的数字,但均为正数(0 到 4,294,967,295)。
浮点类型
它们用于存储小数值(也称为分数),并且也按大小进行分类。同样,你拥有的唯一真正的保证是sizeof(float) <= sizeof(double) <= sizeof (long double)
。浮点类型使用一种相当特殊的内存模型来存储,该模型可能很难理解,我不会深入讨论,但有一个很好的指南here http://msdn.microsoft.com/en-us/library/hd7199ke%28v=vs.100%29.aspx.
有一篇关于 Objective-C 上下文中的 C 原语的精彩博客文章,位于RyPress http://rypress.com/tutorials/objective-c/data-types/primitives.html。许多 CPS 入门教材也有很好的资源。