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

首頁 > 學院 > 開發設計 > 正文

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

2019-11-09 15:06:26
字體:
來源:轉載
供稿:網友

1.在C語言

中我們用到一串有關聯,被當作判斷狀態依據的常量時,會用到枚舉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當我們對于一個事物的一種屬性要用多種狀態描述時,比如一行字,是 3號黑體有下劃線的,就應該這樣  3號|黑體|下劃線,用或的方式集成多種狀態,再判斷某種狀態有沒有。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨江| 水城县| 庆元县| 镇康县| 长武县| 霍山县| 武清区| 上栗县| 百色市| 祁连县| 家居| 石家庄市| 郯城县| 承德市| 资阳市| 祁门县| 江口县| 逊克县| 乌兰县| 康平县| 宁陵县| 循化| 鄢陵县| 垣曲县| 灯塔市| 东方市| 韩城市| 衡阳市| 宁南县| 微山县| 鄂托克旗| 辽源市| 宣威市| 宁安市| 大港区| 南溪县| 晋中市| 辽宁省| 保康县| 辽宁省| 广昌县|