普通枚举
typedef enum{
PersonDoctor,
PersonTeacher
}Person;
这样定义的枚举的值,首位是0,后续依次加1,在此例,PersonDoctor的值为0,PersonTeacher为1。
位移枚举
typedef enum {
PersonDoctor = 1<<0, // 0b0001
PersonTeacher = 1<<1, // 0b0010
} Person;
这样定义的枚举的值,往后1依次按算式标明的那样计算移位。在此例中,PersonDoctor十进制的值是1,PersonTeacher十进制的值是2。
使用位移枚举的好处:
比如person既是doctor也是teacher的时候,就不用在创建一个枚举PersonDoctorAndTeacher,采用以下的方式:
person.type = PersonDoctor | PersonTeacher;
这样person.type就会做或运算
二进制 0001 | 0010 = 0011,转换成十进制就是3。
类型枚举
typedef NS_ENUM(NSInteger,PersonType)
{
PersonTypeDoctor,
PersonTypeTeacher,
};
使用时:
PersonType personType = PersonTypeDoctor;