是DELPHI的优化技术还是BUG?
前二天在调试程序时无意发现(其实以前也碰到过,只是没有留心),DELPHI程序既然有这么一个秘密.程序如下
function testfunc : string;
begin
result := result + 'a';
end;
procedure testCall;
var
i : integer;
tmp : string;
begin
for i := 0 to 3 do
begin
if i > 0 then
tmp := tmp + ','
tmp := tmp + testFunc;
end;
ShowMessage(tmp);
end;
大家能猜得出tmp的结果是多少么,我想很多人看程序都会以为是'a,a,a,a',这样就大错特错了,结果是'a,aa,aaa,aaaa'.
原来DELPHI这家伙自做聪明,RESULT这东西并没有每次重新初始化(我猜想可能是一个指针地址),大家说说这到底是DELPHI的优化技术还是BUG?