微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。