📜  C |结构与联合|问题4

📅  最后修改于: 2021-06-28 21:13:34             🧑  作者: Mango

考虑以下C声明

struct { 
    short s[5];
    union { 
         float y; 
         long z; 
    }u; 
} t;

假设short,float和long类型的对象分别占用2个字节,4个字节和8个字节。忽略对齐注意事项,变量t的内存要求为(GATE CS 2000)

(A) 22个字节
(B) 14个字节
(C) 18个字节
(D) 10个字节答案: (C)
说明:短数组s [5]将占用10个字节,因为short的大小为2个字节。

当我们声明一个联合时,为该联合分配的内存等于该联合的最大成员所需的内存,并且所有成员共享相同的内存空间。由于u是一个并集,分配给u的内存将最大为float y(4个字节)和long z(8个字节)。因此,总大小将为18个字节(10 + 8)。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。