delphi 的 for循环问题(人穷没分 帮忙啊,问题不难的)(0分)

  • 主题发起人 主题发起人 wuyuede
  • 开始时间 开始时间
W

wuyuede

Unregistered / Unconfirmed
GUEST, unregistred user!
在看教程时,对于for的用法都是简单介绍的,没有看到过 对步值的讲解,我想问一下在delphi中能否像 c语言里一样 可以控制 sept 来控制步值?
delphi 中到底能否控制步值?还是只能 加一或者 减一来控制循环?
 
For 循环语句,不能控制步长,担while语句可以做到。
 
for 只能 to 或者 dwonto 步长为1或-1, 没法改变步长
 
步长不能改变,只能加一或减一,
 
只能+1或-1;
 
不能,但是可以变通
 
Delphi的For循环有特殊的优化机制——只能执行简单增量或减量,可以使用最简单的机
器指令,效率极高。如果步长可以变化,那么就需要额外的指令以加入步长值,从而降低效
率。
如果确实需要实现其它步长的循环,完全可以用while或repeat循环——别忘了这帮For的
好兄弟哟。 :)
 
可以变步长啊。
procedure TForm1.Button1Click(Sender: TObject);
var
c, i: integer;
p: PInteger;
begin
c := 0;
for i := 1 to 10 do
begin
if i = 5 then
begin

p := @i;
inc(p^);
end;
inc(c);
end;

ShowMessage(inttostr(c));
end;

结果 是 9
 
procedure TForm1.Button1Click(Sender: TObject);
var
c, i: integer;
p: PInteger;
begin
c := 0;
for i := 1 to 100 do
begin
if i = 5 then
begin

p := @i;
p^ := p^ + 80;
end;
inc(c);
end;

ShowMessage(inttostr(c));
end;
结果 是 20
总之 i可以 随你变
不过 小心 死循环
for 的 结束 是 相等跳
 
LS的想法真不错,竟利用指针来间接修改i的步长值。
 
所以很容易出错.....
都是循环,想变步长的话用while或者repeat吧,如果你只是为了写着方便....-_- 那就无话可说了
 
其实,根本没必要研究步进值的,简单乘法就解决了。

for i:=0 to 50 do
begin
a := i * 2; //a按2步进,等效于 for i=0 to 100 step 2
b := i * 0.5; //b按0.5步进 等效于 for i=0 to 25 step 0.5
end;

循环的最后值 50 是实际最后值 / 步进值,100/2=50,25/0.5=50
这么简单,这是很基础的算法,不需要想得太复杂。
 
后退
顶部