enum ABC{
A,
B,
C=5,
D,
E
};
D和E是否保证大于5?
A和B是否保证小于5(如果可能)?
修改:如果我说C=1
答案 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。