2010-05-06 68 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.