为什么Objective-C布尔数据类型被定义为带符号的char?

And*_*ill 4 c boolean typedef objective-c char

引起我兴趣的是Objective-C的BOOL类型定义.

为什么它被定义为a signed char(如果长度大于1个字节的值被分配给它可能会导致意外行为)而不是int像C那样被定义为(更少的错误余量:零值为false,非零值是真的)?

我能想到的唯一原因是Objective-C设计师微优化存储,因为char它将使用比内存更少的内存int.请有人开导我吗?

Kri*_*son 6

请记住,Objective-C是在20世纪80年代创建的,当时保存字节确实很重要.

正如评论中所提到的,只要你坚持使用值YES和NO,一切都会好的.