我怎么知道枚举的大小Days?它会等于7*4(sizeof(int)) = 28??
在printf()这里给我的价值4,怎样才可以解释呢?
enum Days
{
saturday,
sunday ,
monday ,
tuesday,
wednesday,
thursday,
friday
} TheDay;
printf("%d", sizeof(enum Days));
Run Code Online (Sandbox Code Playgroud)
我们也可以使用它作为(枚举天)(0),它类似于整数数组.如果大小等于4则可以解释这种数组行为的类型?
Som*_*ude 19
在C中,所有枚举都是大多数类型的整数int,这就解释了为什么sizeof(Days) == 4.
要知道有多少值,enum您可以执行以下操作:
enum Days
{
saturday,
sunday,
monday,
tuesday,
wednesday,
thursday,
friday,
NUM_DAYS
};
Run Code Online (Sandbox Code Playgroud)
然后NUM_DAYS将是枚举的数量Days.
请注意,如果更改枚举的值,则无法执行此操作,例如:
enum Foo
{
bar = 5,
NUM_FOO
};
Run Code Online (Sandbox Code Playgroud)
在上面的枚举中,NUM_FOO将是6.
它取决于实现.枚举仅保证足够大以容纳整数值.
参考:
C99标准6.7.2.2枚举说明符
约束
2定义枚举常量值的表达式应为整数常量表达式,其值可表示为int.
...
4 每个枚举类型应与char,有符号整数类型或无符号整数类型兼容.类型的选择是实现定义的,128)但是应该能够表示枚举的所有成员的值.枚举类型在终止枚举器声明列表之后立即完成,并在此后完成.