Intel和微软同时出现的C语言面试题 j 7fL7:,T
#pragma pack(8) 'QJ:`)z
><RpEnWZ<
struct s1{ ^/uA?h:]\
short a; YD<:,|H
long b; Q}`0W[a
~
}; B|Du@^$
Hfv 7LM
struct s2{ ]"r&]qx7
char c; %}[i'rT>
s1 d; RW|`nL
long long e; &]g}u5J!=
}; QFE:tBHe
vhe>)h*B
#pragma pack() x%s-+&
67VL@ ]
问 I*o()
1.sizeof(s2) = ? oNr-Q& C,
2.s2的s1中的a后面空了几个字节接着是b? :C7_Jp*Qv
f6EZ(
v
yu;+o3WlK
U GD2
如果您知道答案请在讨论中写出,以下是部份网友的答案,供参考: 3e
#p@sB
l2`s! ,<>O
网友rwxybh(行云)的答案: [V^WGW2oY
内存布局是 |^0XYBxQ
1*** 11** T,7Y7c/3V
1111 **** M.Y~1c4f
1111 1111 LE&RY[
!\"EFVH
所以答案就是24和3 Diy8gt
s&A}
h
下面是一个测试的程序,试一试就知道了,我用的是VC2005 RdWRWxTn8+
C.~,qmOP
#pragma pack(8) MV<^!W
g@rb
struct s1{ $()5VMb
short a; // 2 BYtes RzxNbeki[W
long b; // 4 Bytes ZNJ@F<