近期看Objective-C 基础教程发现一些之前没有注意到的东西,现在把这些知识点例举出来
1.BOOL
Objective-C中的BOOL是一种signed char的typedef,它使用了8为的存储空间。YES定义为1,而NO定义为0.
OC中并不将BOOL作为仅能保存YES或NO值的真正的布尔类型来处理。编译器将BOOL类型认为八位二进制数,YES或NO知识一种约定。这样就会出现意外,倘若将一个>1Bite的short或int值赋给一个BOOL变量,那么只有低位字节会用作BOOL,假设该低字节刚好为0,BOOL值将会为0,即为NO值
例如:
结果为:are 17 and 6 difference? NO(该结果是错误的)
尽管上述函数是在C语言中会得到真值,但在OC中YES不等于1
2.