objective-c - 为什么 C 标准提供未确定大小的类型(int、long long、char 与 int32_t、int64_t、uint8_t 等)?

标签 objective-c c

为什么 stdint.h 包含在标准中时 的内容不是标准(没有 int 没有 short 没有 float,而是 int32_t、int16_t、float32_t 等)?不明确的字体大小提供了什么优势?

在 Objective-C 中,为什么决定 CGFloatNSIntegerNSUInteger 在不同平台上有不同的大小?

最佳答案

在设计 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/

相关文章:

objective-c - 尝试编码 UIImage 并存储到 NSUserdefault 时,应用程序变慢

objective-c - 如何在 XCode 4.3 中连接 AppDelegate?

ios - 尝试连续从 Facebook 和 Twitter 分享

c - C中的右手迷宫遍历

c++ - 在 linux 中使用 c/c++ 锁定文件

c - 使用 gcc 编译时,函数和变量会以 "_"开头吗?

iphone - 只编辑 uitableview 的一部分

ios - 电子邮件附件不起作用,因为文件尚未完成保存?

c - 如何为连接重新分配字符指针?

c++ - 在代码(.c 文件)中我如何找到 linux 发行版名称版本