我开始相信布尔变量的最佳大小是数据的自然宽度,即在 C/C++ 中它是 int。因此,对于现代处理器,这通常是 32 位。例如,在机器级别将其声明为字节需要 32 位提取,然后是掩码。
但是我已经看到 iOS 中的 BOOL 是 8 位。我曾假设使用字节的人正在使用 8 位处理器的剩余想法。
我意识到这个问题取决于使用情况,并且在大多数情况下,语言定义的布尔值是最好的选择,但有时您需要定义自己的,例如当您转换来自外部源的代码或您想要编写跨平台代码。
同样重要的是,如果要将布尔值打包到串行流中,为了通过以太网等串行线路发送或存储,最好将布尔值打包为更少的位。但我觉得从处理器最佳尺寸打包和拆包可能是最佳选择。
所以我的问题是我认为 32 位处理器上布尔值的最佳大小是 32 位是否正确,如果是,为什么 iOS 使用 8 位。