を開始するために、終了値から実行私はエンバカデロのDelphi 2010の2サイクルと単純なコードでシンプルなアプリ書いている:ウォッチリストによるとデルファイ「のために...」の文は、値
procedure TForm1.Button1Click(Sender: TObject);
var
a:array [0..255] of integer;
i:integer;
k,q:integer;
begin
k:=0;
for I := 0 to 255 do
begin
a[i]:=i;
end;
for I := 0 to 255 do
begin
q:= a[i];
k:=k+q;
end;
Label1.Caption:=inttostr(k);
end;
を、第2サイクル変数 "i"は値256から始まり0(256,255,254、...、0)になりますが、配列の要素は正しい(0,1,2,3、...)。変数 "i"はローカルにのみ宣言され、グローバル変数は宣言されません。 これはなぜ起こりますか?それは正常な行動ですか?
サイドノート:*マジックナンバー*を使用しないでください:i:= 0〜Length(a)do –
生産コードではなくちょっと変わった動作テストです。長さ(a)もこのように動作します。 –
ちょっとした検索では、コードの意味を変えない限り、適用されるのはDelphiコンパイラによる最適化だとヒットしているはずです。 –