上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章,我们可以看到在控制语句中如何将比较运算和逻辑运算组合使用,从而使用复杂的逻辑条件。