C语言题这个是什么意思请高手说明一下

来源:百度知道 编辑:UC知道 时间:2024/05/24 16:19:37
(17)若有以下说明和定义语句,则变量w在内存中所占的字节数是 【19】 。
union aa {float x; float y; char c〔6〕; };
struct st{ union aa v; float w〔5〕; double ave; } w;
正确答案: 1.(34)

为什么是34

union aa v:取最唱的成员的长度,所以取char c〔6〕,占6个字节.
float w〔5〕; 占用5*4=20个字节
double ave;:占用8个字节.
所以和为34
(共同体变量所占的内存长度=最长的成员的长度
结构体变量所占的内存长度=各个成员的长度之和)

答案是错误的。
应该是40。
结构体有字节对齐的问题。

字节对齐是和CPU,编译器等相关的