BOOL的反转

4
在 Objective-C 中,如果我想要反转一个 BOOL 的值,这段代码会起作用吗,还是会将该 BOOL 的值设为 NO
BOOL ab = YES;

ab = !ab; // would this reverse the BOOL, ab, and set it to NO?

if (ab == NO) {
    ab = !ab; // would this reverse the BOOL again and set it to YES?
}

10
是的,确实如此。实际上,编译并查看要比发问题更容易… - Gobra
4个回答

8

没问题,这样做是可以的。 BOOL 只是一个整数。 YES1NO0!1 == 0!0 == 1


2
澄清一下:从技术上讲,BOOL 是有符号字符而不是整型。 - AlexChaffee

2

快速提问,快速回答。

是的。


1

BOOL的使用完全按照您所描述的方式。需要注意的是,NO等于0,而YES等于任何其他值(除了NULL)。

例如:

  1. !YES == NO
  2. !NO == YES
  3. !1 == NO
  4. !0 == YES
  5. !5 == NO

0

这些是正确的!

  1. !YES == NO
  2. !NO == YES
  3. !1 == NO
  4. !0 == YES
  5. !5 == NO

这是不正确的!

FreeAsInBeer:“YES等于任何其他东西(除了NULL)。”- 不正确

YES仅等于有符号字符1,因此例如YES == 32626返回false!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接