2010-05-06 67 views

回答

11

它是由C++标准7.2/1保证:

在枚举列表的标识符声明为常数,会出现无论常量是否需要 。具有=的枚举器定义给出关联的枚举器由 常数表达式指示的值。常量表达式应为整型或枚举类型。如果第一个 枚举器没有初始值设定项,则相应常量的值为零。没有初始化器的枚举器定义 为枚举器提供了通过将前一个枚举器的值增加1而获得的值。

+1

因此,这里A:0,B:1,C:5,D:6,E:7。 – 2010-05-06 16:51:14

0

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

2

在你的情况,是的(见基里尔的答案)。然而,谨防following situation

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

编译器将无法避免与以前使用的值的碰撞,也不会试图让每个值比所有先前的值越大。 在这种情况下,G将大于F,但不是C,D或E.