C語言裏面struct的位分配

去小米筆試,遇到一道題:


對於 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章