I read that the sizeof a union is the largest of it's members. However, in the code below the union is larger than any of it's members. I only see this when using amd64 linux. I am compiling as gcc -o union.o union.c
And the output:Code:#include <stdio.h> typedef union _NESTEDU { long l; int f; } NESTEDU; typedef struct _NOTHING { int a; int b; int c; } NOTHING; typedef union _UNION { int i; char c; NESTEDU n; NOTHING k; } UNION; int main() { printf("struct/union sizeof testing\n"); printf("sizeof() int = %d\n", sizeof(int)); printf("sizeof() char = %d\n", sizeof(char)); printf("sizeof() UNION = %d\n", sizeof(UNION)); printf("sizeof() NESTEDU = %d\n", sizeof(NESTEDU)); printf("sizeof() NOTHING = %d\n", sizeof(NOTHING)); return(0); }
I am new to C so I may be missing something fundamental. Thanks for your help!Code:struct/union sizeof testing sizeof() int = 4 sizeof() char = 1 sizeof() UNION = 16 sizeof() NESTEDU = 8 sizeof() NOTHING = 12



LinkBack URL
About LinkBacks



