布尔与BOOL

nod*_*nja 5 cocoa cocoa-touch objective-c

可能重复:
Objective-C:BOOL vs bool
Objective-C中BOOL和Boolean之间有什么区别吗?

我注意到XCode中的自动完成,在Objective-C中有一个bool和一个BOOL.这些不同吗?为什么有两种不同的布尔?

它们可以互换吗?

dre*_*lax 10

是的他们是不同的.

  • C++bool,它是一个真正的布尔类型.在整数上下文中保证为0或1.
  • C99具有_Bool作为一个真正的布尔类型,并且如果<stdbool.h>被包括,则bool成为一个预处理器宏_Bool(此标头还定义truefalse作为预处理宏用于10分别地).
  • CocoaBOOL一个类型,但它只是一个typedef signed char.它可以表示比0或1更多的值.
  • Boolean一种类型,但它只是一种类型unsigned char.就像,Cocoa BOOL它可以代表更多的值而不仅仅是0或1.

对于Cocoa和Carbon的"布尔"类型,它们应被视为零意味着错误,任何非零值意味着真实.


Don*_*Don 2

BOOL 实际上是一个有符号的字符(感谢 Yuji),而它bool是来自 ISO C99 标准的真正的布尔值。

请参阅此处:http://iosdevelopertips.com/objective-c/of-bool-and-yes.html