C 枚举定义中的位移位有什么作用?
What does a bitwise shift in a C enum definition do?
我是 C 的新手,想知道枚举定义中的位移位 1 << 9 在下面的这种情况下有什么作用:
static enum {
DEAD, LIVE
} state[1 << 9];
表达式1<<9
与29相同,即512.
因此声明了一个包含 512 个枚举的数组。
该代码定义了一个 static
值数组,其中未命名的 enum
具有 2 个值 DEAD
(0) 或 LIVE
(1)。该数组的元素数指定为 1 << 9
(512).
将它们分开会更易读
enum status { DEAD, LIVE };
static enum status state[1 << 9];
另请注意,此枚举类型的大小是特定于实现的。如果紧凑性是一个问题,您应该使用 unsigned char
数组,或使用按位表示,但您需要手动编码,因为 C 语言不支持 built-in 位数组:
enum { DEAD = 0, LIVE = 1 };
static unsigned char state[1 << 9];
我是 C 的新手,想知道枚举定义中的位移位 1 << 9 在下面的这种情况下有什么作用:
static enum {
DEAD, LIVE
} state[1 << 9];
表达式1<<9
与29相同,即512.
因此声明了一个包含 512 个枚举的数组。
该代码定义了一个 static
值数组,其中未命名的 enum
具有 2 个值 DEAD
(0) 或 LIVE
(1)。该数组的元素数指定为 1 << 9
(512).
将它们分开会更易读
enum status { DEAD, LIVE };
static enum status state[1 << 9];
另请注意,此枚举类型的大小是特定于实现的。如果紧凑性是一个问题,您应该使用 unsigned char
数组,或使用按位表示,但您需要手动编码,因为 C 语言不支持 built-in 位数组:
enum { DEAD = 0, LIVE = 1 };
static unsigned char state[1 << 9];