大家。在最近学习OC时,我总是遇到这样的枚举。
enum {
type1 = 0,
type2 = 1 << 0,
type3 = 1 << 1,
};
type = 1&lt;&lt;&lt; 0?它通常用于什么?谢谢你。
答案 0 :(得分:7)
答案 1 :(得分:5)
&LT;&LT;是二元运算符
1 << 0 = 1
1 << 1 = 2
1 << 2 = 4
答案 2 :(得分:3)
此运算符是按位移位(不仅在objective-c中)。
您可以为枚举中的每个条目分配一个整数值,因此它与
相同enum {
type1 = 0,
type2 = 1,
type3 = 2
};
您可以使用shift-operator轻松确保您的枚举条目可以按位添加,如
int bitmask = type2 | type3 //bitmask = 3
答案 3 :(得分:3)
这是一个转变。如果你需要为某些东西分配几种类型,可以使用这种结构。它被称为位掩码。例如:
enum {
type1 = 1,
type2 = 1 << 1,
type3 = 1 << 2,
};
表示type1为二进制00000001,type2为00000010,type3为00000100,依此类推。因此,如果类型掩码为3(00000011),则表示您的对象是type1和type2。
答案 4 :(得分:0)
这个零比特的偏移,即他的缺席。 只是为了统一。