此代码后的state
是LX_DONE
吗?
enum lx_state { LX_START, LX_MIDDLE, LX_DONE };
enum lx_state state = LX_START;
++state;
++state;
答案 0 :(得分:4)
是的,C标准在6.7.2.2/3中说,
每个后续的枚举器没有= 将其枚举常量定义为由其获得的常量表达式的值 将1添加到上一个枚举常量的值
答案 1 :(得分:2)
enum
是一个整数,所以是的,state
将为LX_DONE
,假设您摆脱了奇怪的双++
。
答案 2 :(得分:0)
不,但保证代码不会编译。
enum lx_state { LX_START, LX_MIDDLE, LX_DONE };
int main() {
enum lx_state state = LX_START;
++(++state);
}
给出:
e.c: In function 'main':
e.c:6:2: error: lvalue required as increment operand