Objective-C和Sprite Kit游戏开发从入门到精通
上QQ阅读APP看书,第一时间看更新

2.7 布尔类型

在图2-14中,我们可以看到舱门的两个状态:开启和关闭。在代码中,我们可以使用一个变量来标识舱门的状态,那么,这个变量应该是什么类型呢?

图2-14 舱门开启与关闭

代码中,像这种“开/关”“是/否”“真/假”一类的数据类型,我们一般会使用布尔(Boolean)类型,也称为逻辑型。

■2.7.1 BOOL类型

在Objective-C中,布尔类型的数据可以统一使用BOOL类型,根据不同的平台,它分别定义为bool或signed char类型的别名。此外,BOOL类型的取值只有两个,即YES和NO。

下面的代码演示了BOOL类型的使用。

    #import <Foundation/Foundation.h>
    int main(int argc, const char *argv[])
    {
        @autoreleasepool {
            BOOL doorIsOpen = NO;
            NSLog(@"%i", doorIsOpen);
        }
        return 0;
    }

执行代码,我们会看到显示的内容是0,而不是NO。这是由于YES和NO值是以宏的形式来实现的,所以,我们无法直接显示YES或NO,而是显示它们对应的值,整数形式就是1(YES)和0(NO)。

■2.7.2 布尔运算

布尔运算(又称为逻辑运算),在Objective-C中,布尔运算符包括:

❑ 逻辑与运算符&&。

❑ 逻辑或运算符||。

❑ 逻辑非运算符!。

此外,布尔运算的结果同样为布尔数据,在Objective-C中,也就是BOOL类型,只能是YES或NO值。

逻辑与(AND)运算,使用两个运算数,只有两个运算数的值都是真(YES)时,运算结果才为真(YES),否则运算结果为假(NO)。

    NSLog(@"%i", YES && YES);  // 1
    NSLog(@"%i", YES && NO);  // 0
    NSLog(@"%i", NO && NO);  // 0

逻辑或(OR)运算,使用两个运算数,当其中一个运算数的值为真(YES)时,运算结果就为真(YES),否则运算结果为假(NO)。如下面的代码。

    NSLog(@"%i", YES || YES);  // 1
    NSLog(@"%i", YES || NO);  // 1
    NSLog(@"%i", NO || NO);  // 0

逻辑非(NOT)运算,也称为取反运算,只需要一个运算数,当运算数为真(YES)时,取反运算结果为假(NO);当运算数为假(NO)时,取反运算结果为真(YES)。如下面的代码。

    NSLog(@"%i", ! YES);  // 0
    NSLog(@"%i", ! NO);  // 1

第3章,我们可以看到在控制语句中如何将比较运算和逻辑运算组合使用,从而使用复杂的逻辑条件。