国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C與Objective-C中的枚舉(位移枚舉)

2019-11-09 14:09:19
字體:
供稿:網(wǎng)友

1.在C語言

中我們用到一串有關聯(lián),被當作判斷狀態(tài)依據(jù)的常量時,會用到枚舉Enum,其使用:

enum week{     Mon,     Tues,     Wed,     Thurs,     Fri,     Sat,     Sun };默認情況Mon = 0;后面依次加1,也可以自己指定:

enum week{     Mon = 1,     Tues,     Wed,     Thurs,     Fri,     Sat,     Sun };這樣Mon = 1;后面依然依次加1.

2.在Objective-C

中,因為版本,有幾種實用枚舉的樣式。

使用C語言樣式:

    enum test{      t1,      t2    }tt;        switch (tt) {        case t1:            NSLog(@"t1");            break;        case t2:            NSLog(@"t2");            break;        default:            break;    }感覺用起來很不爽,那么:

    typedef enum{      t1,      t2    }test;        test tt;        switch (tt) {        case t1:            NSLog(@"t1");            break;        case t2:            NSLog(@"t2");            break;        default:            break;    }還是不夠OC:

    typedef NS_ENUM(NSInteger,test){      t1,      t2    };        test tt;        switch (tt) {        case t1:            NSLog(@"t1");            break;        case t2:            NSLog(@"t2");            break;        default:            break;    }嗯,這回就非常OC了,推薦這樣使用

3.按位位移枚舉

    typedef NS_ENUM(NSInteger,test){      t1 = 1,     //1  對應2進制 1   左移低位0補齊      t2 = 1<<1,  //2          10      t3 = 1<<2,  //4         100      t4 = 1<<3,  //8        1000      t5 = 1<<4,  //16      10000      t6 = 1<<5   //32     100000    };        NSLog(@"t1 = %ld",t1);    NSLog(@"t2 = %ld",t2);    NSLog(@"t3 = %ld",t3);    NSLog(@"t2 = %ld",t4);    NSLog(@"t3 = %ld",t5);    NSLog(@"t3 = %ld",t6);輸出結果為1,2,4,8,16,32 。

那么什么情況用這種枚舉呢?先上代碼:

    typedef NS_ENUM(NSInteger,test){      t1 = 1,     //1  對應2進制 1   左移低位0補齊      t2 = 1<<1,  //2          10      t3 = 1<<2,  //4         100      t4 = 1<<3,  //8        1000      t5 = 1<<4,  //16      10000      t6 = 1<<5   //32     100000    };        test tt= (t3|t6);        if((tt&t1)){        NSLog(@"有t1");    }else{        NSLog(@"沒有t1");    }        if((tt&t3)){        NSLog(@"有t3");    }else{        NSLog(@"沒有t3");    }        if((tt&t5)){        NSLog(@"有t5");    }else{        NSLog(@"沒有t5");    }        if((tt&t6)){        NSLog(@"有t6");    }else{        NSLog(@"沒有t6");    }輸出結果為:

2017-02-10 11:56:01.243 UIKitLearn[2460:69675] 沒有t12017-02-10 11:56:01.243 UIKitLearn[2460:69675] 有t32017-02-10 11:56:01.243 UIKitLearn[2460:69675] 沒有t52017-02-10 11:56:01.244 UIKitLearn[2460:69675] 有t6當我們對于一個事物的一種屬性要用多種狀態(tài)描述時,比如一行字,是 3號黑體有下劃線的,就應該這樣  3號|黑體|下劃線,用或的方式集成多種狀態(tài),再判斷某種狀態(tài)有沒有。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 类乌齐县| 大同县| 沭阳县| 英山县| 延庆县| 温宿县| 双辽市| 射阳县| 光山县| 辰溪县| 黄石市| 龙游县| 墨脱县| 前郭尔| 界首市| 开化县| 岱山县| 富蕴县| 武强县| 潞城市| 钟山县| 明溪县| 临颍县| 滨海县| 凤凰县| 磴口县| 青神县| 威宁| 焦作市| 吴旗县| 绍兴市| 华容县| 襄樊市| 淅川县| 梅河口市| 永年县| 宝兴县| 涞水县| 雷州市| 宣汉县| 叙永县|