这是测试问题的代码段。问题是S的大小是多少。
struct S
{
char a : 4;
unsigned char b : 3;
signed char : 2;
char c : 1;
char d : 5;
};
":"做?将它应用于有符号或无符号字符(或任何其他数据类型)时有什么区别吗?这通常是什么时候使用的?
答案 0 :(得分:1)
它有点字段,它表示例如char a只有4位内存而不是普通字符8.无符号字符b只有3位内存。位数限制了它可以容纳的值范围。
位字段声明一个具有显式大小的类数据成员(以位为单位)。可以打包相邻的位字段成员以共享和跨越各个字节。 http://en.cppreference.com/w/cpp/language/bit_field