1. 程式人生 > >union和enum的大小問題

union和enum的大小問題

union的記憶體對齊問題

union記憶體是共享的,按最大的資料型別來算。
但是,有些情況需要小心記憶體對齊,例如:

union A{
    int x;
    char y[5];
};
int main(){
    cout<<sizeof(A);      //輸出8
}

個人理解:union的最終記憶體得是int和char的公倍數,且大於等於最大的資料型別的size

enum的記憶體大小

enum也是一種資料型別,每次只有一個值,大小為定義型別的大小位元組

int main(){
    enum A{
        a,b,c,d,e
    };
    cout
<<sizeof(A);//輸出4(預設int型) }
int main(){
    enum A:char{
        a='1',b='2',c,d,e      //相當於#define a 1   ...
    };
    cout<<sizeof(A)<<endl;//輸出1,char型
    cout<<b<<endl;//輸出2
}

致謝

致謝室友LYB的技術支援(皮)