OC基本功(三)使用枚举

1.声明枚举类型Direction

#import <Foundation/Foundation.h>

// 声明枚举类型
enum Direction {up, down, left = 10, right};

int main(int argc, const char * argv[])

其中up = 0, down = 1, left = 10, right = 11。


2.声明Direction变量d

        // 声明枚举类型变量d,并赋值right
        enum Direction d = right;
        NSLog(@"%d", d);

为d赋值right,此时d的值为11。

可以用枚举中的常量值或整数值来判断d的值:

        if (d == 0) {
            NSLog(@"up");
        }
        else if (d == 1) {
            NSLog(@"down");
        }
        else if (d == 10) {
            NSLog(@"left");
        }
        else if (d == 11) {
            NSLog(@"right");
        }
        else {
            NSLog(@"Not matched");
        }
        
        if (d == up) {
            NSLog(@"%d", up);
        }
        else if (d == down) {
            NSLog(@"%d", down);
        }
        else if (d == left) {
            NSLog(@"%d", left);
        }
        else if (d == right) {
            NSLog(@"%d", right);
        }
        else {
            NSLog(@"Not matched");
        }


控制台输出:

2014-02-02 13:33:23.138 enum[1130:303] 11
2014-02-02 13:33:23.139 enum[1130:303] right
2014-02-02 13:33:23.140 enum[1130:303] 11

3.如果要定义一个全局变量,而又要将对应的整数值和特殊的常量值联系起来,例如上面的11对应right,此时可以使用枚举类型。


4.枚举类型的枚举值可以作为常量值使用,如:

        NSUInteger d = up;
        NSLog(@"%lu", (unsigned long)d);

但是,如果两个枚举类型在定义时存在有枚举值相等:

// 声明枚举类型
enum Direction {up, down, left = 10, right};

enum Direction2 {up, down2, left2 = 10, right2};


就会出现错误:


对于Direction和Direction2枚举类型的枚举值up由于重定义,所以编译器会报错。


你可能感兴趣的:(enum)