Delphi2 之前允许 但32位的for循环已经作了优化处理 所有就不能在for循环中该变循环变量的值你可以作如下调试 for I := 5 to 10 do //看看I的值是不是5->10 Caption := 'ff'; 结果不是!因为for已经作了优化处理procedure TForm1.Button1Click(Sender: TObject); var I: Integer; T: DWORD; begin T := GetTickCount; for I := 1 to 10000000 do ; //你可以比较一下它们执行的速度 ShowMessage(IntToStr(GetTickCount - T)); //39 T := GetTickCount; I := 1; while I <= 10000000 do Inc(I); ShowMessage(IntToStr(GetTickCount - T)); //59 end;
C和Basic和Matlab程序写多了,初次见到不支持循环变量改变的语言,感到有点吃惊。
只有解释执行的程序才可以在中间修改for循环变量,编译执行(FORTRAN/Pascal/C/C++等)都不行。这不是笨的问题。
可以用while或repeate循环
但32位的for循环已经作了优化处理
所有就不能在for循环中该变循环变量的值你可以作如下调试
for I := 5 to 10 do //看看I的值是不是5->10
Caption := 'ff';
结果不是!因为for已经作了优化处理procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
T: DWORD;
begin
T := GetTickCount;
for I := 1 to 10000000 do ;
//你可以比较一下它们执行的速度
ShowMessage(IntToStr(GetTickCount - T)); //39
T := GetTickCount;
I := 1;
while I <= 10000000 do Inc(I);
ShowMessage(IntToStr(GetTickCount - T)); //59
end;
我是C转过来的,我还是比较倾向于写for(i=0;i<=100;i+=10)……这样的语句,这样写程序又简短又容易读。对吗?
{ 使用 I * 10 也没有什么不方便 }争论语言或者是工具的好坏是没有意义的反正不是信仰什么宗教、什么好用就用什么但不要自己没有能力 驾御她 就说三道四不同语言有不同的特性
谁叫你不是她的创造者