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

3.2 條件語句

判斷代碼執(zhí)行的邏輯時(shí),條件的設(shè)定是非常重要的,比如,不是友機(jī)并不意味著要摧毀,但如果是敵機(jī),則摧毀是必需的,所以,我們可以快速地判斷它是不是敵機(jī),而不是判斷是否為友機(jī)。

在Objective-C代碼中,對于條件的判斷,可以有兩種方法:

? 使用if語句結(jié)構(gòu)。

? 使用?:運(yùn)算符。

■3.2.1 if語句

if語句的基本應(yīng)用格式如下。

    if (<條件>) {
        <語句塊>
    }

當(dāng)<條件>成立(YES),就執(zhí)行<語句塊>,然后執(zhí)行}后面的代碼。如果<條件>不成立(NO),就直接執(zhí)行}后面的代碼。

如下面的代碼,如果是敵人,就開火摧毀。

    BOOL isEnemy = YES;
    if (isEnemy) {
        NSLog(@"開火并摧毀");
    }

如果不是敵機(jī)怎么辦呢?我們可以添加else語句,如下面的代碼。

    BOOL isEnemy = NO;
    if (isEnemy) {
        NSLog(@"開火并摧毀");
    } else {
        NSLog(@"不是敵機(jī),允許登艦");
    }

更復(fù)雜的情況下,會(huì)有多個(gè)條件,可以在結(jié)構(gòu)中添加else if語句,如下面的代碼。

    if (<條件1>) {
        <語句塊1>
    }else if (<條件2>) {
        <語句塊2>
    }else if (<條件n>) {
        <語句塊n>
    }else {
        <語句塊n+1>
    }

在這種if語句結(jié)構(gòu)中,else if可以有多個(gè),也可以沒有,每一個(gè)條件都對應(yīng)了一個(gè)需要執(zhí)行的語句塊。else語句只能放在所有條件的后面,而且只能有一個(gè),當(dāng)所有條件都不滿足時(shí),會(huì)執(zhí)行<語句塊n+1>。

此外,對于條件的判斷還可以嵌套使用,如下面的代碼。

    BOOL isEnemy = NO;
    NSInteger tarmacNumber = 10;
    if (isEnemy) {
        NSLog(@"開火并摧毀");
    } else {
        if (tarmacNumber > 0){
            NSLog(@"請?jiān)?%li號(hào)專用停機(jī)坪降落", tarmacNumber);
        } else {
            NSLog(@"請?jiān)诠餐C(jī)坪降落");
        }
    }

下面的代碼,演示了如何使用復(fù)合條件判斷一個(gè)年份是否為閏年。

    int year = 2016;
    if ((year % 100 ! = 0 && year % 4 == 0) || year % 400 == 0)
    {
        NSLog(@"%i年是閏年", year);
    } else {
        NSLog(@"%i年不是閏年", year);
    }

如果大家在工作中需要更多關(guān)于日期的操作,第9章會(huì)討論相關(guān)內(nèi)容。

■3.2.2 ? :運(yùn)算符

對于簡單的if-else語句結(jié)構(gòu),我們可以使用?:運(yùn)算符代替,它是唯一的一種三元運(yùn)算符,需要三個(gè)表達(dá)式參加運(yùn)算,其應(yīng)用格式如下。

    <表達(dá)式1> ? <表達(dá)式2> : <表達(dá)式3>

其中,<表達(dá)式1>為邏輯表達(dá)式,其結(jié)果應(yīng)該是BOOL類型,當(dāng)其值為YES時(shí),整個(gè)表達(dá)式的運(yùn)算結(jié)果就是<表達(dá)式2>的值。如果<表達(dá)式1>的值為NO,整個(gè)表達(dá)式的運(yùn)算結(jié)果就是<表達(dá)式3>的值。如下面的代碼。

    BOOL isEnemy = NO;
    isEnemy ? NSLog(@"開火并摧毀") : NSLog(@"不是敵機(jī),允許登艦");

請注意,如果表達(dá)式的代碼稍微有一點(diǎn)點(diǎn)復(fù)雜,可以使用小括號(hào)()將三個(gè)表達(dá)式分別包裝一下。

主站蜘蛛池模板: 阳城县| 龙游县| 平遥县| 武乡县| 巴南区| 望奎县| 广平县| 永平县| 莱州市| 察雅县| 鄱阳县| 察雅县| 澎湖县| 登封市| 甘泉县| 望都县| 沧州市| 巴彦淖尔市| 青川县| 通道| 夏邑县| 开阳县| 庄浪县| 大化| 锦州市| 民县| 新沂市| 泰和县| 邵东县| 重庆市| 册亨县| 明星| 法库县| 肥西县| 金山区| 柳河县| 宜阳县| 荔波县| 太谷县| 红河县| 自治县|