是否在ANSI C中定义了枚举?

时间:2011-06-14 17:12:25

标签: c enums undefined-behavior

此代码后的stateLX_DONE吗?

enum lx_state { LX_START, LX_MIDDLE, LX_DONE };

enum lx_state state = LX_START;
++state;
++state;

3 个答案:

答案 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