去小米筆試,遇到一道題:
對於 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