C言語の共用体について質問をさせてください。
typedef struct { int a; int b; int c; int d; }TEST1; typedef struct{ int a; int b; int c; int d; int e; int f; int g; union{ TEST1 test1; int h; int i; int j; long k; double l; }INTEST2; }TEST2; int main(){ printf("%d\n",sizeof(TEST2)); return 0; }
上記のプログラムを実行した場合、私の考えでは、44と表示されると考えております。
int型4バイト×7 = 28バイト
共用体で最も大きいTEST1型16バイト
合計44バイトだと考えております。
しかし、このプログラムを実行すると48バイトと表示されます。
INTEST2内のdouble型を消すと44バイトになります。
なぜ48バイトとなってしまうのかが理解できません。
どなたかご教授していただけませんでしょうか。
よろしくお願いいたします。
会社では一部例外を除き、共用体は禁止しているところが多いです。
ほぼ使わないのにあえて理解する必要もないと思います。
回答4件
あなたの回答
tips
プレビュー