| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 835 人关注过本帖
标题:再次请求大家指点
只看楼主 加入收藏
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1854
专家分:1868
注 册:2004-5-30
结帖率:56.76%
收藏
 问题点数:0 回复次数:10 
再次请求大家指点
typedef  union
{     long i;int k[5];char c;}DATE;
 struct  date
{     int cat;DATE cow;double dog;}too;
DATE max;
则下列语句输出是
printf("%d".sizeof(struce date)+sizeof(max));

请各位求出结果后帮忙解释一下为什么!
搜索更多相关主题的帖子: 请求 
2005-03-25 14:00
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
int + ( long + int [5] +char ) + double  + int +int [5] +char
应该这样吧
我算的38个字节
对这个不熟

动于心而静如水
2005-03-25 14:06
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1854
专家分:1868
注 册:2004-5-30
收藏
得分:0 
答案是30,我也不知道是怎么得来的!

感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2005-03-25 14:32
suyongtao
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:33
帖 子:8674
专家分:127
注 册:2004-11-6
收藏
得分:0 
学这个东东我不知道有什么用,,,,,,,,?@?!?#!?#?!#?1

面朝大海,春暖花开!
2005-03-25 14:59
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 
编译器的数据对齐。

2005-03-25 15:18
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1854
专家分:1868
注 册:2004-5-30
收藏
得分:0 
帮我解释一下行吗?谢了!

感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2005-03-25 18:10
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
答案是正确的,data  占10个字节!


共用体的长度取域中最大的长度!

2005-03-25 19:09
lanhaih
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-3-25
收藏
得分:0 
哦哦哦
我是新来的
不懂

2005-03-25 19:11
young
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:223
专家分:160
注 册:2004-9-5
收藏
得分:0 
看看csdn的这两片文章吧,希望对你理解有帮助 http://dev.csdn.net/Develop/article/42/42446.shtm http://dev.csdn.net/article/65/65403.shtm

如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针;
2005-03-26 10:26
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
我的大小姐
应该是这样的

typedef union
{
    long i;
    int k[5];
    char c;
}DATE;

根据union的定义,取占空间最大的做为该union的大小,在这里int k[5]最大 2*5=10
所以
DATE max的长度就应该是10

下面到struct了
struct date
{
    int cat;
    DATE cow;
    double dog;
}too;

根据struct的定义,我们知道,struct的大小就是里面所由变量的大小的和
所以 2+10+8=20

然后printf("%d".sizeof(struce date)+sizeof(max));
那当然就是20+10=30啦

淘宝杜琨
2005-03-26 12:27
快速回复:再次请求大家指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017583 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved