我正在阅读有关位域的信息: http://en.cppreference.com/w/cpp/language/bit_field。
文章提到“straddl(e)”位。 示例上下文包括......
“相邻的位字段成员可能被打包以共享和跨越 个别字节。“
这个词在按位字段中的含义是什么?
答案 0 :(得分:2)
我在编写页面时使用了这个词来引用情况,正如在评论中正确发现的那样,在该页面的第二个例子中显示:
#include <iostream>
struct S {
// will usually occupy 2 bytes:
// 3 bits: value of b1
// 2 bits: unused
// 6 bits: value of b2
// 2 bits: value of b3
// 3 bits: unused
unsigned char b1 : 3, : 2, b2 : 6, b3 : 2;
};
int main()
{
std::cout << sizeof(S) << '\n'; // usually prints 2
}
这里(假设sizeof(S)
是2)字段b2
是6位长,前3位在第一个字节中,第二个3位在第二个字节中。它跨越了两个字节。 (下一个例子展示了如何将所有6位强制为一个字节)