困惑!!这到底是怎么一回事啊???(50分)

  • 主题发起人 主题发起人 yangmingnian
  • 开始时间 开始时间
Y

yangmingnian

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了一个Record类型如下:
TMyData = record
a : array[1..5] of Char
// a行
b : SmallInt
// b行
c : LongInt
// c行
end;
使用如下:
var
temp : TMyData;
begin
showmessage(inttostr(sizeof(a)))
// 查看record类型所占字节数
end;
当TMyData的定义中只有a行时,输出结果为5;这个可以理解。
当TMyData的定义中只有b行时,输出结果为2;这个可以理解。
当TMyData的定义中只有c行时,输出结果为4;这个可以理解。
当TMyData的定义中包含a、b两行时,理论上输出结果应为7,而实际上是8。
当TMyData的定义中包含a、c两行时,理论上输出结果应为9,而实际上是12。
当TMyData的定义中包含b、c两行时,理论上输出结果应为6,而实际上是8。
当TMyData的定义中包含a、b、c三行时,理论上输出结果应为11,而实际上也是12。
若将Record定义中的a行中的数组上界由5改成6以后在做如上实验,
理论上输出结果分别为:6,2,4;8,10,6;12。
实际上输出结果分别为:6,2,4;8,12,8;12。
这到底是怎么一回事啊?面对这个结果,我真的是一头雾水,本来是个很简单的问题,
可是没想到实际结果与理论相差这么大,令我找不出其中半点规律!
那位大侠知道的话,恳请指教!!!
 
看下面pipi.的发言:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1015017
 
再看另外一个贴子pipi.的发言:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=930827
 
谢谢Pipi.
这分就是你的了!!
 
接受答案了.
 
光说不练,怎么还不给分呀
 
给过了啊,你可真是个急性子,呵呵!
不过还是要谢谢你,我是大富翁的新兵,提的问题不多,
可是你已经为我解决了两个问题了。希望跟你交个朋友!!
 
后退
顶部