線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1718
推到 Plurk!
推到 Facebook!

[Delphi]下For-loop的問題....聽說是基本的

尚未結案
wangks
一般會員


發表:5
回覆:10
積分:3
註冊:2003-12-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-04 12:29:17 IP:211.75.xxx.xxx 未訂閱
我新建一個form, 在form中加上一個button, 在utton的click加上這段程式 procedure TForm1.Button1Click(Sender: TObject); var a, aa: integer; b, bb: byte; c, cc: word; begin aa := 0; bb := 0; cc := 0; for a := 0 to aa -1 do begin ShowMessage('Integer: Integer'); break; end; for b := 0 to aa -1 do begin ShowMessage('Byte: Integer'); break; end; for c := 0 to aa -1 do begin ShowMessage('Word: Integer'); break; end; for a := 0 to bb -1 do begin ShowMessage('Integer: Byte'); break; end; for b := 0 to bb -1 do begin ShowMessage('Byte: Byte'); break; end; for c := 0 to bb -1 do begin ShowMessage('Word: Byte'); break; end; for a := 0 to cc -1 do begin ShowMessage('Integer: Word'); break; end; for b := 0 to cc -1 do begin ShowMessage('Byte: Word'); break; end; for c := 0 to cc -1 do begin ShowMessage('Word: Word'); break; end; end; 我的問題是: 為什麼Byte or Word屬性的變數當做比較子的話 一樣會進入for-loop中? 努力找問題, 努力找答案
------
努力找問題, 努力找答案
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-04 13:21:45 IP:211.23.xxx.xxx 未訂閱
程式的結果沒錯呀!!    因為 BYTE 和 WORD 都是無號數, 0-1 後, 分別會溢位變成 255, 65535 比較的基準是你用來跑迴圈的那個變數的型態.    參考以下的碼會更清楚一點  
procedure TForm1.Button1Click(Sender: TObject);
var
a, aa, aaa: integer;
b, bb, bbb: byte;
c, cc, ccc: word;
begin
aa := 0;
bb := 0;
cc := 0;    for a := 0 to aa -1 do begin
  aaa:=aa -1 ;
  ShowMessage('Integer: Integer ' inttostr(aaa));
  break;
end;
for b := 0 to aa -1 do begin
  bbb:=aa-1 ;
  ShowMessage('Byte: Integer ' inttostr(bbb));
  break;
end;
for c := 0 to aa -1 do begin
  ccc:=aa-1 ;
  ShowMessage('Word: Integer ' inttostr(ccc));
  break;
end;
for a := 0 to bb -1 do begin
  aaa:=bb -1 ;
  ShowMessage('Integer: Byte ' inttostr(aaa));
  break;
end;
for b := 0 to bb -1 do begin
  bbb:=bb-1 ;
  ShowMessage('Byte: Byte ' inttostr(bbb));
  break;
end;
for c := 0 to bb -1 do begin
  ccc:=bb-1 ;
  ShowMessage('Word: Byte ' inttostr(ccc));
  break;
end;
for a := 0 to cc -1 do begin
  aaa:=cc -1 ;
  ShowMessage('Integer: Word ' inttostr(aaa));
  break;
end;
for b := 0 to cc -1 do begin
  bbb:=cc-1 ;
  ShowMessage('Byte: Word ' inttostr(bbb));
  break;
end;
for c := 0 to cc -1 do begin
  ccc:=cc-1 ;
  ShowMessage('Word: Word ' inttostr(ccc));
  break;
end;
end;
 
...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
系統時間:2024-07-04 14:36:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!