实力巨牌会所:C问题帮忙看看

来源:百度文库 编辑:高校问答 时间:2024/05/02 18:29:21
有以下定义和语句,则sizeof(a)的值是 【14】 ,而sizeof(a.share)的值是 【15】
struct date{ int day;
int month;
int year;
union{int share1
float share2;
}share;
}a;
答案是多少怎么做啊?

jsbanwjly 说得不对。
这个答案不唯一。
如果是在基于DOS(16位操作系统)的编译器(比如TC2.0)上运行,则【14】2+2+2+4=10。(Int 占2位)【15】4。
如果是在基于windows(32位操作系统)的编译器(比如VC6.0)上运行,则【14】4+4+4+4=16。(Int 占4位)【15】4。
不信试一下
struct date
{
int day;
int month;
int year;
union
{
int share1;
float share2;
}share;
}a;
int main()
{
printf("%d,%d\n",sizeof(a),sizeof(a.share));
getch();
return 0;
}

【14】2+2+4=8,结构体是所有的加到一起
【15】是4个字节,共用体中的字节是最大的那个