更改枚举类型C ++的数据大小

时间:2013-05-23 09:08:39

标签: c++ mfc enums size

默认情况下,枚举类型变量的大小为整数,即内存中的4个字节。有没有办法将其转换为任何其他数据类型大小。

我不是在谈论类型转换,而是讨论存储枚举类型所需的内存大小。I have referred this question但它没有告诉我们将整数大小更改为任何其他大小。任何帮助。

2 个答案:

答案 0 :(得分:7)

c ++ 11引入了strongly typed enums(和Strongly Typed Enums (Revision 3)),它允许指定底层整数类型:

#include <iostream>

enum E_ushort : unsigned short { EUS_1, EUS_2 };
enum E_ulong : unsigned long { EUL_1, EUL_2 };

int main()
{
    std::cout << sizeof(E_ushort::EUS_1) << "\n";
    std::cout << sizeof(E_ulong::EUL_1) << "\n";
    return 0;
}

输出:

2
4

答案 1 :(得分:0)

阅读一些文档on this website我认为这是不可能的。事实上,这是合乎逻辑的。枚举列表只是一个列表,其中的项目由数字引用。那么,首先问一下你在看哪种类型?你需要一个枚举列表,项目的提名者是为了一个int吗?或者,你是否正在寻找像浮动字符长的其他类型..在这种情况下我认为不可能