无符号的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
    };
    

  1. 相关文章
  2. 评论本文:
  3. EMail: