枚举字段是否具有c语言的默认值

时间:2015-05-12 14:06:05

标签: c

我正在某处读取c代码,我找到了这个结构

typedef enum
{
  SPIIP_0,
  SPIIP_1,
  NUMBER_OF_SPIIP,
  ERROR_SPIIP
}SPIIP_ID_E;

在我的代码中的其他地方,我找到了状态:if(IP>NUMBER_OF_SPIIP)NUMBER_OF_SPIIP值无处声明

我的问题是:deos enum type为其元素定义值

1 个答案:

答案 0 :(得分:2)

是的,确实如此。根据{{​​1}}标准,章节§6.7.2.2,枚举说明符,第3段,(强调我的

  

枚举器列表中的标识符被声明为具有int类型的常量,并且可以出现在允许的地方。 127)具有C11的枚举器将其枚举常量定义为值不断的表达。 如果第一个枚举数没有=,则其枚举常量的值为=。每个后续的没有0的枚举器将其枚举常量定义为通过将=添加到前一个枚举常量的值而获得的常量表达式的值。(使用枚举器   =可以生成枚举常量,其值与同一枚举中的其他值重复。)枚举的枚举数也称为其成员。

因此,在您的情况下,1的值为NUMBER_OF_SPIIP