[英]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中可能對此有疑問,但我找不到。
如果第一個枚舉器沒有初始化程序,則關聯值為零。 對於其定義中沒有初始化程序的任何其他枚舉器,關聯的值是前一個枚舉器的值加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.