我正在使用的一段代码包含一系列没有标识符的枚举。据我了解,每个枚举器根据其在枚举列表中的位置分配一个整数值。第一个枚举器的值为0,第二个枚举器的值为1,依此类推。
在下面的示例中,将为每个枚举数分配哪些整数?将APPLE = 0,ORANGE = 1,BANANA = 2,GRAPE = 3,等等。
enum {APPLE, ORANGE, BANANA};
enum {GRAPE, PEAR};
enum {PEACH, GRAPEFRUIT};
答案 0 :(得分:1)
每个枚举都是单独的,并将0
的值分配给第一项。当然,同一枚举中的每个后续项都将被赋予比上一个更高的值。
因此,APPLE
,GRAPE
和PEACH
的值为0,ORANGE
,PEAR
和GRAPEFRUIT
的值为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所得的常数表达式的值。 (将枚举数与=一起使用可能会产生枚举常量,其值与同一枚举中的其他值重复。)枚举的枚举数也称为其成员。