为什么 stdint.h 包含在标准中时 的内容不是标准(没有 int 没有 short 没有 float,而是 int32_t、int16_t、float32_t 等)?不明确的字体大小提供了什么优势?
在 Objective-C 中,为什么决定 CGFloat
、NSInteger
、NSUInteger
在不同平台上有不同的大小?
最佳答案
在设计 C 时,有不同字长的计算机。不仅是 8 的倍数,还有其他大小,例如 PDP-7 上的 18 位字大小。所以有时 int
是 16 位,但也可能是 18 位,或 32 位,或完全是其他大小。在 Cray-1 上,int
是 64 位。因此,int
表示“任何对这台计算机来说方便的东西,但至少是 16 位”。
那是大约四十年前的事了。计算机发生了变化,所以它现在看起来肯定很奇怪。
NSInteger
用于表示计算机的字长,因为在 32 位系统上要求数组的第 5 个十亿个元素没有意义,但在 64 位系统上却非常有意义-位系统。
我无法解释为什么 CGFloat
在 64 位系统上是一个 double
。这让我很困惑。
关于objective-c - 为什么 C 标准提供未确定大小的类型(int、long long、char 与 int32_t、int64_t、uint8_t 等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838735/