给定C语言的数据结构 struct T { int w; union T { char c; int i; double d; } U; }; 假设char类型变量的存储区大小是1字节,int类型变量的存储区大小是4字节, double类型变量的存储区大小是8字节,则在不考虑字对齐方式的情况下,为存储一个 street T类型变量而需要的存储区域至少应为(20)字节。
A、
4
B、
8
C、
12
D、
17
【正确答案】
C
【答案解析】
解析:在不考虑字对齐规则的情况下,C语言中一个结构体变量的存储区大小就是其所有成员所需存储区大小之和,一个联合体变量的存储区大小就是其各成员所需存储区大小中最大者。因此题目中给定的联合体union T变量需要的存储区大小就是存储一个double类型变量的大小(即8字节),struct T类型变量的存储区最小应为int类型成员w存储区大小(4字节)与union T类型成员U的存储区大小之和,即12字节。
提交答案
关闭