- 论坛徽章:
- 0
|
本帖最后由 geekjack 于 2011-06-25 13:08 编辑
- typedef struct{
- double d;
- char c;
- char cc[3];
- }s1;
- typedef struct{
- char cc[3];
- double d;
- char c;
- }s2;
复制代码 我是在XP下运行的。
这段代码得出的结果是sizeof(s1)等于16,sizeof(s2)等于24.
说下我的思路哈:
s1应该是 8+1+3 = 12. 补齐4 等于16为double( 的整数倍,不知道是不是这样理解。
s2呢? 是如何对齐的呢?
我按OX占位老老实实算了一下,把自己算晕了……
还有一段代码:- typedef struct{
- char c[3];
- long double ld;
- char cc;
- }s3;
复制代码 这个当在VC6.0中运行时,sizeof(s3)结果为 24
在DEV-C++中运行时,sizeof(s3)结果为20?
==> 已知 在vc中sizeof(long double)=8,在DEV-C++中sizeof(long double)=12 呵呵
问题太多,就先把这两个贴出来。先谢过各位了!
各位要是有什么好一点的原则,或是原理需要我去学习的,不妨教一下哈。这几天看了很多文章,试了N次,还是没搞太清楚,汗…… |
|