我遇到了一个枚举定义:
typedef enum NSInteger {
kBorderTypeNone = 0,
kBorderTypeLeft = 1 << 0,
kBorderTypeRight = 1 << 1,
kBorderTypeTop = 1 << 2,
kBorderTypeBottom = 1 << 3
} BorderType;
并且(可能)也可以等同于
typedef enum NSInteger {
kBorderTypeNone = 0,
kBorderTypeLeft = 1 ,
kBorderTypeRight = 2,
kBorderTypeTop = 4,
kBorderTypeBottom = 8
} BorderType;
内部差异(如果有)是什么?
一个相对于另一个有什么优势吗?
推荐哪一个?
编辑1:
如果两者相同,那么编译器如何处理呢?
它在编译器的哪个阶段都简化为相同的指令集?
最佳答案
两种格式都编译为相同格式。从易于编程的角度来看,第一个是有效的。第二个在编译期间效率更高,因为它是直接分配值。