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

时间:2010-04-05 22:39:16

标签: c objective-c char boolean typedef

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

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

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

1 个答案:

答案 0 :(得分:6)

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

如评论中所述,只要您坚持使用YES和NO值,一切都会没问题。