簡體   English   中英

枚舉的整數值的分配規則是什么?

[英]What is the rule for assignment of the integer value of enum?

假設我對此進行了編碼:

enum State{
    State0,                //=0
    State1,                //=1
    State2,                //=2
    State5 = State2+3,     //=5
    State6 = State5+1,     //=6
    StateSize = State6+1   //=7
};

我可以依靠這個事實多少(例如StateSize==7 )?

更具體地說,什么是C ++法律/規則來確定它們的價值?

我覺得SO中可能對此有疑問,但我找不到。

cppreference.com報價

如果第一個枚舉器沒有初始化程序,則關聯值為零。 對於其定義中沒有初始化程序的任何其他枚舉器,關聯的值是前一個枚舉器的值加1。

7.2枚舉聲明
如果第一個枚舉器沒有初始化程序,則相應常數的值為零。 沒有初始化程序的枚舉數定義為枚舉數賦值,方法是將前一個枚舉數的值加1。

您可以依賴於遞增先前分配的枚舉值的值。

enum State{
    State0,     //=0
    State1,     //=1
    State2,     //=2
    State5=5,   //=5
    State6,     //=6
    StateSize   //=7
};

偽代碼:

initial: cnt = 0
for each `enumor` in `enum specifier`
begin
    if `enumor` is in the form of `ID = ConstExp`
        let ID = ConstExp
        cnt = ConstExp
    else
        let ID = cnt
        cnt = cnt + 1
    endif
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM