我想定义我自己的数据类型,它可以保存六个可能值中的一个,以便了解更多关于 C++ 中的内存管理的信息。在数字上,我希望能够保持 0 到 5。二进制,三个位(101 = 5)就足够了,尽管不会使用一些(6 和 7)。数据类型也应该消耗尽可能少的内存。
我不确定如何做到这一点。首先,我尝试了一个为所有字段定义值的枚举。据我所知,那里的值是十六进制的,所以一个“hexbit”应该允许我存储 0 到 15。但是将它与一个字符(使用 sizeof)进行比较,它表明它是字符大小的 4 倍,并且如果我没记错的话,一个 char 包含 0 到 255。
#include <iostream>
enum Foo
{
a = 0x0,
b = 0x1,
c = 0x2,
d = 0x3,
e = 0x4,
f = 0x5,
};
int main()
{
Foo myfoo = a;
char mychar = 'a';
std::cout << sizeof(myfoo); // prints 4
std::cout << sizeof(mychar); // prints 1
return 1;
}
我显然误解了一些东西,但看不到是什么,所以我转向 SO。:)
此外,在写这篇文章时,我意识到我显然缺乏某些词汇。我已将此帖子设为社区 wiki,请对其进行编辑,以便我可以学习所有内容的正确单词。