如何解决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 举报,一经查实,本站将立刻删除。