ANSI C中定义了枚举加法吗?

问题描述

| 是否可以保证此代码后的“ 0”为“ 1”?
enum lx_state { LX_START,LX_MIDDLE,LX_DONE };

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

解决方法

        是的,C标准在6.7.2.2/3中说,   每个后续的枚举数,不含=   将其枚举常量定义为通过以下方式获得的常量表达式的值   将1加上上一个枚举常量的值     ,        
enum
是一个整数,所以是的,假设您摆脱了怪异的双
++
state
将是
LX_DONE
。     ,        不,但是可以保证代码不会被编译。
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