在这里的评论 - https://stackoverflow.com/a/9393138/8047 - 我发现BOOL
有一些意想不到的行为时,从int
值设置它的值。大多数情况下,如果该值设置为0x1000
,则会评估为FALSE
(令人惊讶)。int值的含义不是“拟合” - bool或BOOL是否为Objective-C?
NSLog(@"All zero? %d %d", (BOOL)0, (bool)0);
NSLog(@"All one? %d %d %d", (BOOL)4095, (BOOL)4096, (BOOL)4097); // 4096=0x1000 or 8-bits
NSLog(@"All one? %d %d %d", (bool)4095, (bool)4096, (bool)4097);
Produces:
All zero? 0 0
All one? -1 0 1
All one? 1 1 1
我认为这是奇怪,但还是那句话,我不从int
转换为BOOL
多少反正。但是:
- 这是否意味着
bool
优于BOOL
?为什么或者为什么不? - 是不是还好用
if (thatBool) {
或一个应该更喜欢
if (thatBool ? YES : NO) {
为什么呢?
注意:这是这个问题的更具体的版本 - Objective-C : BOOL vs bool - 但我认为它增加了它,并不是重复的。
'!!'铸造技巧上的任何链接?这些东西有点难以搜索:) – 2012-02-24 16:20:17
这是一个简单的[双重否定](http://www.google.com/search?q=c+double+negation),应该更容易搜索。 – zoul 2012-02-24 16:28:30
谢谢@zoul,很简单。我认为'注意危险类型'是正确的。 – 2012-02-24 20:38:40