当前位置: 技术问答>linux和unix
sizeof()疑问???
来源: 互联网 发布时间:2015-06-08
本文导语: ************************************** typedef { double ff; } tutu; tutu tt; sizeof(tt) == 8 typedef { double dd; float ff; int tt; } tutu; tutu tt; sizeof(tt) == 16 **************************** typedef { double dd; float ff; int tt; short ...
**************************************
typedef {
double ff;
} tutu;
tutu tt;
sizeof(tt) == 8
typedef {
double dd;
float ff;
int tt;
} tutu;
tutu tt;
sizeof(tt) == 16
****************************
typedef {
double dd;
float ff;
int tt;
short ss;
} tutu;
tutu tt;
sizeof(tt) == 20
*****************************
typedef {
double dd;
float ff;
int tt;
short ss;
char cc;
} tutu;
tutu tt;
sizeof(tt) == 20
谁知道啊!??帮我解释一下!!谢先了!!
typedef {
double ff;
} tutu;
tutu tt;
sizeof(tt) == 8
typedef {
double dd;
float ff;
int tt;
} tutu;
tutu tt;
sizeof(tt) == 16
****************************
typedef {
double dd;
float ff;
int tt;
short ss;
} tutu;
tutu tt;
sizeof(tt) == 20
*****************************
typedef {
double dd;
float ff;
int tt;
short ss;
char cc;
} tutu;
tutu tt;
sizeof(tt) == 20
谁知道啊!??帮我解释一下!!谢先了!!
|
typedef {
double dd; // 8
float ff; // 4
int tt; // 4
short ss; // 2
char cc; // 1
} tutu; // 合计 19,如无 cc,合计18
无论哪种,出于存取效率考虑,编译器通常按本机最有效的字长取齐。在32位计算机上通常是4个字节最有效率,所以按4对齐,无论18还是19,都对齐到4的整数倍,即20。事实上,你把 ss 去掉,其长度应为17,仍然对齐到20。
这个不是Linux 的问题,应该到 C++ 栏目里去问。
double dd; // 8
float ff; // 4
int tt; // 4
short ss; // 2
char cc; // 1
} tutu; // 合计 19,如无 cc,合计18
无论哪种,出于存取效率考虑,编译器通常按本机最有效的字长取齐。在32位计算机上通常是4个字节最有效率,所以按4对齐,无论18还是19,都对齐到4的整数倍,即20。事实上,你把 ss 去掉,其长度应为17,仍然对齐到20。
这个不是Linux 的问题,应该到 C++ 栏目里去问。