C为枚举序数值提供了什么保证



当我将枚举转换为整数类型时,我能期待什么?

  • 第一个变量的值是0吗?

  • 变体序数是否递增1?

假设我没有明确提供这些值。


如果你喜欢代码,那么问题就在这里:

enum foo
{
A,
B,
};
int
main(void)
{
assert(A == 0);
assert(B == 1);
}

第一个变量的值为0吗?

是。

变量序数是否递增1?

是。

C为枚举序数值提供了什么保证

来源https://port70.net/~nsz/c/c11/n1570.html#6.7.2.2:

[…]如果第一个枚举器没有=,则其枚举常量的值为0。每个no=的后续枚举器都将其枚举常量定义为常量表达式的值,该值是通过将上一个枚举常量的值加1而获得的。[…]

相关内容

  • 没有找到相关文章

最新更新