我怎么知道枚举Days的大小?等于7*4(sizeof(int)) = 28吗?
这里的printf()为我提供了4值,如何解释?

enum Days
{
    saturday,
    sunday ,
    monday ,
    tuesday,
    wednesday,
    thursday,
    friday
} TheDay;
printf("%d", sizeof(enum Days));

我们也可以将其用作(enum Days)(0),类似于整数数组。如果size等于4,那么如何解释这种数组的行为?

最佳答案

在C语言中,所有枚举都是int类型的大多数时间整数,这说明了为什么要使用sizeof(Days) == 4的原因。

要知道enum中有多少个值,您可以执行以下操作:

enum Days
{
    saturday,
    sunday,
    monday,
    tuesday,
    wednesday,
    thursday,
    friday,
    NUM_DAYS
};

然后NUM_DAYS将是Days中的枚举数。

请注意,如果您更改枚举的值,则此操作将无效,例如:
enum Foo
{
    bar = 5,
    NUM_FOO
};

在上面的枚举中,NUM_FOO将为6

关于c - C语言中enum的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9972345/

10-13 06:02