【发布时间】:2017-06-26 23:18:45
【问题描述】:
假设我这样编码:
enum State{
State0, //=0
State1, //=1
State2, //=2
State5 = State2+3, //=5
State6 = State5+1, //=6
StateSize = State6+1 //=7
};
我可以在多大程度上依赖这个事实(例如StateSize==7)?
更具体地说,确定它们的值是什么的 C++ 法律/规则是什么?
感觉SO里面可能有这方面的问题,但是找不到。
【问题讨论】:
-
以防万一,当您不想跟踪它们所代表的整数时,通常您会想要使用枚举。
-
@synchronizer 我也想操作和比较它们。 :)
-
必须有几个问题以某种形式涵盖这一点,例如this one
-
请注意,没有什么可以阻止您(除了常识)使用
enum State { State0, State1 = -1, State2 = 222, State3, State4 =-1 };— 这些值不必按递增顺序排列,不必是正数,不必是唯一的。 -
@Shafik Yaghmour 谢谢!现在,我确信这个问题在某种程度上是重复的。另外,感谢 Jonathan Leffler,这对我来说是新知识。
标签: c++ c++11 enums language-lawyer