哪些整数值分配给一系列没有标识符的枚举?

时间:2019-02-18 19:23:28

标签: c enums

我正在使用的一段代码包含一系列没有标识符的枚举。据我了解,每个枚举器根据其在枚举列表中的位置分配一个整数值。第一个枚举器的值为0,第二个枚举器的值为1,依此类推。

在下面的示例中,将为每个枚举数分配哪些整数?将APPLE = 0,ORANGE = 1,BANANA = 2,GRAPE = 3,等等。

enum {APPLE, ORANGE, BANANA};
enum {GRAPE, PEAR};
enum {PEACH, GRAPEFRUIT};

2 个答案:

答案 0 :(得分:1)

每个枚举都是单独的,并将0的值分配给第一项。当然,同一枚举中的每个后续项都将被赋予比上一个更高的值。

因此,APPLEGRAPEPEACH的值为0,ORANGEPEARGRAPEFRUIT的值为1,而BANANA的值为2

答案 1 :(得分:1)

ÀPPLE,ORANGE和BANANA的值分别为0,1和2。然后重新启动GRAPE和PEAR。再次重新启动。因此,APPLE = GRAPE = PEACH = 0,ORANGE = PEAR = GRAPEFRUIT = 1和BANANA = 2。

根据C11标准:

  

枚举器列表中的标识符被声明为类型为int的常量,并且可以在允许的任何地方出现。)带有=的枚举器将其枚举常量定义为常量表达式的值。 如果第一个枚举数不为=,则其枚举常数的值为0。每个后续的不等于=的枚举数将其枚举常数定义为将前一个枚举常数的值加1所得的常数表达式的值。 (将枚举数与=一起使用可能会产生枚举常量,其值与同一枚举中的其他值重复。)枚举的枚举数也称为其成员。

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