我想比较 Objective-c 中的 2 个 BOOL 值。
我发现以下代码中的 (3)-(6) 有效。
(1)-(2) 不起作用,因为 BOOL 只是signed char
.
(3) 有效且可读性强,但我认为bool
不是objective-c。在objective-c代码中
使用好吗?bool
在objective-c中比较2个BOOL值的安全和好方法是什么?
还有其他更好的比较方法吗?
BOOL b = YES;
BOOL c = 2;
NSLog(@"(1) %d", b == c); // not work
NSLog(@"(2) %d", (BOOL)b == (BOOL)c); // not work
NSLog(@"(3) %d", (bool)b == (bool)c);
NSLog(@"(4) %d", !b == !c);
NSLog(@"(5) %d", !!b == !!c);
NSLog(@"(6) %d", (b != 0) == (c != 0));
结果:
(1) 0
(2) 0
(3) 1
(4) 1
(5) 1
(6) 1