假设我编码:
enum State{
State0, //=0
State1, //=1
State2, //=2
State5 = State2+3, //=5
State6 = State5+1, //=6
StateSize = State6+1 //=7
};
我可以依赖这个事实多少(例如StateSize==7
)?
更具体地说,确定它们的值是什么的C ++法律/规则是什么?
我觉得在SO中可能存在一个问题,但我找不到它。
答案 0 :(得分:3)
如果第一个枚举器没有初始值设定项,则关联值为零。对于其定义没有初始值设定项的任何其他枚举器,关联值是前一个枚举器的值加1。
答案 1 :(得分:2)
7.2枚举声明
如果第一个枚举器没有初始化器,则该值为 相应的常数为零。没有的枚举器定义 初始化程序为枚举数提供通过增加得到的值 上一个枚举器的值为1。
您可以依赖于先前指定的枚举值递增的值。
enum State{
State0, //=0
State1, //=1
State2, //=2
State5=5, //=5
State6, //=6
StateSize //=7
};
答案 2 :(得分:0)
伪码:
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