去小米笔试,遇到一道题:
对于 32 位操作系统, 不考虑边界对齐, sizeof (A) = __
struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
};
想起来这只有在大一的时候看老谭的书才见过,细节已经记不太清楚了,但是想,C语言这种语法设定肯定是为了节省空间,所以如果两个或多个声明连续的成员能共享一个字节,应该是会把他们挤在一起的。
#include <stdio.h>
struct s
{
char t: 4;
char s: 4;
};
int main()
{
printf("%d\n", sizeof(struct s));
return 0;
}
输出是 1