奇怪的数据类型 - C++

Pac*_*cka 2 c++ uint

我知道这听起来像是一个愚蠢的问题,但我想知道是否可以以任何方式制作这样的自定义变量大小,而不是使用普通的 8、16、32 和 64 位整数:

uint15_t var; //as an example
Run Code Online (Sandbox Code Playgroud)

我在网上做了一些研究,发现没有任何东西适用于所有尺寸(只有12 位和 24 位之类的东西)。(我还想知道位域是否也适用于其他数据大小)。

是的,我知道你可以使用 16 位整数来存储 15 位值,但我只是想知道是否可以做这样的事情。

如何制作和实现自定义整数大小?

Jer*_*ner 5

在结构或类内部,可以使用位域功能来声明成员变量所需大小的整数:

unsigned int var : 15;
Run Code Online (Sandbox Code Playgroud)

...它的 CPU 效率不会很高(因为编译器必须在对该变量的大多数访问中生成按位操作),但它会给您所需的 15 位行为。