#include <stdio.h>
int main(void)
{
union Acnt
{
int Acno,Bal;
char name[10];
float EMI;
};
printf("%d", sizeof(union Acnt));
return 0;
}
此联合中最大的成员大小为10.但输出为12.请解释原因。
答案 0 :(得分:3)
union的总大小将是大于(或等于)所需大小的最小整数,并且是union中最大类型的倍数。在你的情况下,union将被填充到float / int&gt; = 10的最小倍数。你可以通过pack pragma阻止填充:
#include <stdio.h>
int main(int argc, char *argv[]) {
#pragma pack(push, 1)
union Acnt
{
int Acno,Bal;
char name[10];
float EMI;
};
#pragma pack(pop)
printf("%d",sizeof(union Acnt));
return 0;
}