每个人。最近在学习OC的时候,总是碰到这样的enum。
enum {
type1 = 0,
type2 = 1 << 0,
type3 = 1 << 1,
};
type = 1 << 0 是什么意思?它通常是用来做什么的?谢谢转发。
每个人。最近在学习OC的时候,总是碰到这样的enum。
enum {
type1 = 0,
type2 = 1 << 0,
type3 = 1 << 1,
};
type = 1 << 0 是什么意思?它通常是用来做什么的?谢谢转发。
<< 是二元运算符
1 << 0 = 1
1 << 1 = 2
1 << 2 = 4
这是一位移位。如果您需要为某物分配多种类型,则可以使用这种结构。它被称为位掩码。例子:
enum {
type1 = 1,
type2 = 1 << 1,
type3 = 1 << 2,
};
表示type1为二进制00000001,type2为00000010,type3为00000100,以此类推。因此,如果类型掩码为 3 (00000011),则您知道您的对象是 type1 和 type2。
该运算符是按位移位(不仅在objective-c中)。
您可以为枚举中的每个条目分配一个整数值,因此它与
enum {
type1 = 0,
type2 = 1,
type3 = 2
};
您可以使用移位运算符轻松确保您的枚举条目可以按位添加,例如
int bitmask = type2 | type3 //bitmask = 3
这个偏移量为零位,即他的缺席。只是为了统一。