一道 简单的C语言 题~~~~~急急急~

sea175508289 2008-04-14 10:45:06
struct aa
{int rl;double r2;float r3;
uniom uu {char u1[5];long u2[2];}ua;
}mya;
求sizeof(struct aa)的值



分析过程 说下最好。谢谢大师们指点。
...全文
351 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
rushman 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Treazy 的回复:]
和平台相关
和编译选项相关

答案略……

[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Treazy 的回复:]
和平台相关
和编译选项相关

[/Quote]
myullian 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Treazy 的回复:]
和平台相关
和编译选项相关

[/Quote]
同意,死读书不如无书
gton08 2008-04-15
  • 打赏
  • 举报
回复
这缩进...
Secrete_Hunter 2008-04-15
  • 打赏
  • 举报
回复
内存对齐的问题,不确定吧~
lanmuyi 2008-04-15
  • 打赏
  • 举报
回复
32字节:4+4(内存对齐)+8+4+4(内存对齐)+8

struct aa 
{
int rl;
float r3;
double r2;

union uu
{
char u1[5];
long u2[2];
}ua;
};


结构优化,如上所示,将r2和r3换位,可以节省8字节,因为不会因为内存对齐而浪费空间了,此时为24字节。
fallening 2008-04-15
  • 打赏
  • 举报
回复
g++ 4.30下
无论如何优化都是24
yzzlijun 2008-04-15
  • 打赏
  • 举报
回复
是32位


int 4位,double 8位,float 8位.
下面的只能加上long 16位

Titoo_Wang 2008-04-15
  • 打赏
  • 举报
回复
3楼正解。
应该是32
cyqxyz 2008-04-15
  • 打赏
  • 举报
回复

32




czyboy123 2008-04-15
  • 打赏
  • 举报
回复
犯错了,LOGN是4个字节..汗一个先
所以整个结构体是按8个字节对齐的
那应该是8(int rl)+8(double r2)+8(float r3)+8(uu)=32;
czyboy123 2008-04-15
  • 打赏
  • 举报
回复
struct aa
{int rl;double r2;float r3;
uniom uu {char u1[5];long u2[2];}ua;
}mya;
WIN32下
答案:32
sizeof(uu)=16;//最大为long u2[2]
所以整个结构体是按16个字节对齐的

int rl;double r2;float r3; //4+8+4 =16;刚好对齐了
uu //16

SIZEOF(MAYA) = 16+16 =32

ZONGGuanghao 2008-04-15
  • 打赏
  • 举报
回复
建议看看# pagma pack struct 用法
内存对齐
ZONGGuanghao 2008-04-15
  • 打赏
  • 举报
回复
嗯 同意楼上 和平台编译器相关
你注意两点 1 内存对齐 2 联合体取最大的成员
不想低调 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 rushman 的回复:]
引用 2 楼 Treazy 的回复:
和平台相关
和编译选项相关

答案略……
[/Quote]
声声醉 2008-04-15
  • 打赏
  • 举报
回复
这个和编译器以及编译选项是密切相关。
不同的操作系统或者编译器,结果是完全不一样
涉及字节对齐
nameless_LEARNER 2008-04-14
  • 打赏
  • 举报
回复
我想也该是union 在TC里面运行是22 INT是双字节 double是八字节 float是4字节 long是四字节 两个是8字节 而char是1字节 5个是5字节
不过因为union里面取的是大的 因此取大的long 由此可知 应该是2+8+4+8=22 所以答案是22 不过有的机子可能不一样 要是64位机的话我就不知道了
希望对你有帮助
flyingpig4945 2008-04-14
  • 打赏
  • 举报
回复
同飞雪兄,建议楼主上网搜《sizeof终极无惑》这篇文章,必有帮助。
meteora112 2008-04-14
  • 打赏
  • 举报
回复
uniom ??union吧?
星羽 2008-04-14
  • 打赏
  • 举报
回复

32



加载更多回复(9)

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧