我知道
struct bit
{
unsigned char a : 1;
}
因为padding还是会占用一个byte,我的问题是:
struct bit
{
unsigned char a : 1;
...
unsigned char h : 1;
}
这个结构会占用与 char 相同的大小吗?如果是这样,我最好只使用 char
吗?我问是因为我想使用位作为键,但我宁愿尽可能避免按位运算。
最佳答案
使用位域时没有任何保证。该结构可以具有任何大小和任何位顺序。事实上,标准甚至不支持位域的 unsigned char
类型!您的代码已经依赖于非标准扩展。
忘掉位域,忘掉 char
。如果您想要可预测的、可移植的代码,您应该使用 uint8_t
和按位运算符。
关于c++ - 与 char 相比的位域大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41822688/