有以下定义的语句,则sizeof(a)的值是( ).我觉得是16;为什么答案是10.

struct date
{int day;
int mouth;
int year;
union{int share1;
float share2;
}share;
}a;

用的什么编译器?? 就算不算上联合体的长度,3个int也是12了。难道int是2??相当于vc里面的short int= 2个字节 这样解释就通了..3个short int 等于6 然后加上联合体中最长的 float,而sizeof(float)=4。所以总共是10。 你可以在你的编译器中把sizeof(int)和sizeof(float)打印出来看看,看是多少。 参考资料中是c++吧中关于short int 和int有什么区别的讨论 推荐先看5楼。

参考资料:http://tieba.baidu.com/f?kz=79577070

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-23
sizeof取结构体的长度时,取得是结构体中最长的那个变量追问

那结构体里面最长的变量是10吗?

追答

你这个结构体里面就应该是你的那个union{...}share.不知道你怎么定义的。我就不知道长度罗。还有就是不同的编译器数据类型的长度不一样哦

第2个回答  2012-03-23
vs 2010实际测试,确实是16.