首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 聯合體大小計算:按最大成員對齊,char[6] + int = 8 字節

     編輯:程式設計綜合問答

代碼


union {
    char st[6];
    int i;
} u;
printf("%zu\n", sizeof(u)); // 輸出 8

規則

  1. 聯合體大小 = 最大成員的大小,向最大成員對齊要求的倍數對齊。
  2. char st[6]:大小 6,對齊 1。
  3. int i:大小 4(32位系統),對齊 4。
  4. 最大成員大小為 6,但需按 4 字節對齊 → 向上取整到 8。

驗證


printf("alignof(int)=%zu\n", _Alignof(int)); // 4
printf("alignof(char[6])=%zu\n", _Alignof(char[6])); // 1

擴展

  • 若 int 為 8 字節(64 位長整型),聯合體大小為 8(已對齊)。
  • 若最大成員為 double(8 字節,對齊 8),聯合體大小至少 8。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved