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。
这到底是怎么一回事啊?面对这个结果,我真的是一头雾水,本来是个很简单的问题,
可是没想到实际结果与理论相差这么大,令我找不出其中半点规律!
那位大侠知道的话,恳请指教!!!
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。
这到底是怎么一回事啊?面对这个结果,我真的是一头雾水,本来是个很简单的问题,
可是没想到实际结果与理论相差这么大,令我找不出其中半点规律!
那位大侠知道的话,恳请指教!!!