-4
这是一个测试问题的代码片段。问题是S的大小是多少。这个简短的C++代码是什么意思?
struct S
{
char a : 4;
unsigned char b : 3;
signed char : 2;
char c : 1;
char d : 5;
};
“:”做什么?将它应用于有符号或无符号字符(或任何其他数据类型)时有任何区别吗?这通常用于何时?
http://en.cppreference.com/w/cpp/language/bit_field –
也值得一读https://stackoverflow.com/questions/44169863/what-does-char-3-in-a- struct-mean-and-how-large-is-the-member作为警告,提示这个问题有多丑。 – user4581301
请注意,“多个相邻的位字段通常打包在一起(尽管此行为是实现定义的)”。答案是实现定义的。 –