c++ - 与 char 相比的位域大小

标签 c++ c bit-fields

我知道

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/

相关文章:

c - 当底层位域类型在 C 中不是 int 时的 lvalue.bitfield 类型

c++ - 位域成员的大小?

c++ - VIM 中 c++ 类标签的确定性导航。 ctags 效果不佳

c++ - 使用 visual studio 2013 的 opencv 3.0.0 中有许多未定义的函数

c++ - 如何在 C++ 中简洁地初始化安全集合?

c - 二叉搜索树代码不起作用

c++ - 我是否必须使用 weak_ptr.lock() 来测试它是否指向有效对象?

php - C 中是否有与 PHP 中相同的运算符 ===?

mysql - 为什么 mysql_num_rows 返回零?

c++ - 从位域获取完整值