- 相关文章
- 评论本文:
无符号的enum
From: xuyibo.org Updated: 2021-03-19当更新时自动发送邮件通知。 | |
有什么建议或评论,可以贴一下。 | |
你的支持,让我们做的更好。 | |
今天给以下FOO中i赋值时,遇到一个问题:
enum ENUMX { a = 0, b = 1, c = 2 }; typedef struct _FOO { ENUMX i : 2; DWORD reserved : 30; } FOO; int _tmain(int argc, _TCHAR* argv[]) { FOO foo; foo.i = c; if (foo.i == c) { puts("equal"); } else { puts("not equal"); } return 0; }
程序执行后,foo.i的值为0xfffffffe(-2),当后面采用i值和a、b、c做比较时会产生错误。
google一下,可以这样修复:
enum ENUMX : unsigned int { a = 0, b = 1, c = 2 };