我是C的新手并想知道,按位移1<<枚举定义中的9在下面的例子中是这样做的:
static enum {
DEAD, LIVE
} state[1 << 9];
答案 0 :(得分:6)
表达式1<<9
与2 9 相同,即512。
因此声明了一个包含512个枚举的数组。
答案 1 :(得分:4)
该代码定义了static
未命名enum
值的数组,其中包含2个值DEAD
(0)或LIVE
(1)。此数组的元素数量指定为1 << 9
(512)。
将这些分开为
会更具可读性enum status { DEAD, LIVE };
static enum status state[1 << 9];
另请注意,此枚举类型的大小是特定于实现的。如果紧凑是一个问题,你应该使用unsigned char
数组,或使用按位表示,但你需要手动编码,因为C语言没有内置的位数组支持:
enum { DEAD = 0, LIVE = 1 };
static unsigned char state[1 << 9];