首页 > 试题广场 >

给定C语言数据结构struct T{long w;un...

[单选题]
给定C语言数据结构
struct T{
    long w;
    union U {
        char c;
        int i;
        double d;
    } u1;
} T1;
假设在64位系统下,在不考虑字对齐方式的情况下
为存储T1结构所需要的存储区域可能为()字节。
  • 12
  • 17
  • 16
  • 21
  • 25
c语言中的union 是联合体,就是一个多个变量的结构同时使用一块内存区域,区域的取值大小为该结构中长度最大的变量的值;
(1)32位:double 8字节,long 4字节,则最终12字节;
(2)64位:double8字节,long8字节,最终16字节
发表于 2019-08-28 22:34:42 回复(4)
  1. c/c++
  2. 32位编译器  

  3. char :1个字节  
  4. char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)  
  5. short int : 2个字节  
  6.   
  7. int:  4个字节  
  8. unsigned int : 4个字节  
  9. float:  4个字节  
  10. double:   8个字节  
  11. long:   4个字节  
  12. long long:  8个字节  
  13. unsigned long:  4个字节  
  14.   
  15. 64位编译器  
  16. char :1个字节  
  17. char*(即指针变量): 8个字节  
  18. short int : 2个字节  
  19. int:  4个字节  
  20. unsigned int : 4个字节  
  21. float:  4个字节  
  22. double:   8个字节  
  23. long:   8个字节  
  24. long long:  8个字节  
  25. unsigned long:  8个字节
他说的是64系统并不是64位编辑器,有可能位32位有可能位64位
发表于 2019-08-27 18:50:18 回复(3)
这题不是都在64位下了吗?
发表于 2019-09-04 23:51:32 回复(1)
64位系统,long8字节,联合体以最大变量为准开辟空间,double8字节。
发表于 2021-01-30 14:42:23 回复(0)
sizeof(char)=1,sizeof(int)=4,sizeof(double)=8,然而union的大小取决于长度最大的那个,因此U1的字节数为8;
而sizeof(long)=8,因此,T1结构需要的存储区域为8+8=16个字节。
发表于 2022-04-02 17:35:59 回复(0)
共同体取最大的字节类型
发表于 2023-07-31 21:42:57 回复(0)
64位系统 
long占8
union中 char--1  int--4 double--8
所以结果可能是是 9 12 16 
发表于 2020-10-28 13:21:22 回复(0)
要对齐呀,应该是确定值16吧
发表于 2023-01-06 20:03:00 回复(0)
不是说16进制吗?
发表于 2019-09-26 11:29:19 回复(0)