这是一个C++面试测试题而不是作业。C++中枚举类型数据的大小是多少?
#include <iostream>
using namespace std;
enum months_t { january, february, march, april, may, june, july, august, september,
october, november, december} y2k;
int main()
{
cout << "sizeof months_t is " << sizeof(months_t) << endl;
cout << "sizeof y2k is " << sizeof(y2k) << endl;
enum months_t1 { january, february, march, april, may, june, july, august,
september, october, november, december} y2k1;
cout << "sizeof months_t1 is " << sizeof(months_t1) << endl;
cout << "sizeof y2k1 is " << sizeof(y2k1) << endl;
}
输出:
的sizeof months_t是4
的sizeof 2000年是4
的sizeof months_t1是4
的sizeof y2k1是4
为什么所有的大小这4个字节?不是12 x 4 = 48字节?
我知道联合元素占据相同的内存位置,但这是一个枚举。
没有人提到枚举类吗?我希望C++ enthuasiasts在这样的问题上超越责任的要求。 –
对OP的解密是当天的第一步。尽管如此,没有什么能够阻止你对枚举类进行权衡。 – ObscureRobot
@MattJoiner你的意思是说,在C++ 11中,你可以指定一个枚举的_underlying type_,它是它模仿的整型类型?例如'enum month:char {january,...};'。类枚举,又名范围枚举,是另一种为其常量创建封闭名称空间的类。事情是,类枚举总是一个固定的基础类型(如果没有指定'int')。 – rodrigo