官术网_书友最值得收藏!

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章,我們可以看到在控制語句中如何將比較運算和邏輯運算組合使用,從而使用復雜的邏輯條件。

主站蜘蛛池模板: 咸宁市| 衡东县| 常德市| 云霄县| 马龙县| 玉田县| 太仆寺旗| 平阴县| 天门市| 长兴县| 五大连池市| 周至县| 车致| 塘沽区| 富裕县| 敦化市| 伊吾县| 古浪县| 洪雅县| 瑞安市| 宁陕县| 乐平市| 白河县| 通榆县| 西峡县| 无极县| 景泰县| 乐安县| 灵武市| 萍乡市| 彭州市| 施甸县| 新晃| 静海县| 休宁县| 南溪县| 蓝田县| 二手房| 巨野县| 湟中县| 巴彦淖尔市|