枚举成员的值,当某些成员具有用户定义的值时

时间:2010-05-06 12:27:04

标签: c++ enums

enum ABC{
 A,
 B,
 C=5,
 D,
 E
};

D和E是否保证大于5?
A和B是否保证小于5(如果可能)?

修改:如果我说C=1

,会发生什么

3 个答案:

答案 0 :(得分:11)

由C ++ Standard 7.2 / 1保证:

  

枚举器列表中的标识符声明为常量,并且可以出现在常量的任何位置   需要。带=的枚举器定义为关联的枚举器提供由...指示的值   常量表达式。常量表达式应为整数或枚举类型。如果是第一个   枚举器没有初始化器,相应常量的值为零。枚举器定义   没有初始值设定项为枚举数提供通过增加前一个值获得的值   一位普查员。

答案 1 :(得分:2)

在你的情况下,是的(参见基里尔的回答)。但是,请注意following situation

enum ABC
{ 
  A,
  B,
  C = 5,
  D,
  E,
  F = 4,
  G,
  H
};

编译器不会避免与先前使用的值发生冲突,也不会尝试使每个值都大于以前的所有值。 在这种情况下,G将大于F,但不大于C,D或E.

答案 2 :(得分:0)

是的,它是有保证的,A和B的值必须分别为0和1。