我是C新手,想知道在下面的例子中,枚举定义中的位移位1<

static enum {
    DEAD, LIVE
} state[1 << 9];

最佳答案

代码定义了一个未命名值的static数组,其中有两个值enum(0)或DEAD(1)。此数组的元素数指定为LIVE(512)。
如果把它们分开

enum status { DEAD, LIVE };
static enum status state[1 << 9];

还要注意,此枚举类型的大小是特定于实现的如果存在紧凑性问题,则应使用1 << 9数组,或使用按位表示,但由于C语言不支持位数组,因此需要手工编写:
enum { DEAD = 0, LIVE = 1 };
static unsigned char state[1 << 9];

关于c - C枚举定义的按位移位有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49462473/

10-09 02:13