- 相关文章
- 评论本文:
无符号的enum
Author: 徐艺波 From: xuyibo.org Updated: 2009-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
};