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由于重定义,所以编译器会报错。