And*_*and 8 delphi variables for-loop
在Delphi中,考虑一下
var
i: integer;
begin
for i := 0 to N do
begin
{ Code }
end;
Run Code Online (Sandbox Code Playgroud)
有人可能会认为,i = N在后for循环,但确实在Delphi编译器保证这一点?在Delphi if循环之后,可以假设循环变量等于循环内的最后一个值吗?
更新
在尝试了几个简单的循环之后,我怀疑它i实际上等于一个加上i循环后循环内部的最后一个值 ...但是你能依靠这个吗?
小智 24
不,德尔福不保证任何价值.在循环之外,变量是未定义的 - 而语言指南IIRC明确表示 - 这意味着较新的编译器实现可以自由地改变变量可能由于实际实现而在循环外具有的任何值.
while如果你需要在循环后使用循环索引,我建议使用循环更清晰:
i := 0;
while i <= N
begin
{ Code }
i := i + 1;
end;
Run Code Online (Sandbox Code Playgroud)
之后循环终止,你知道这i将是N + 1(或更高,如果N大于零本来可以更小).