Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267322
  • 博文数量: 81
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 961
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-31 21:31
文章存档

2009年(15)

2008年(66)

我的朋友

分类: C/C++

2008-09-22 21:15:18

  typedef union {long i; int k[5]; char c;} DATE;
  struct data { int cat; DATE cow; double dog;} too;
  DATE max;

  则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_52_

  答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20
data
是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.
所以结果是 20 + 32 = 52.

  当然...在某些16位编辑器, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

区别只在字长的大小  double等类型是不变的

阅读(1532) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~