以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.xinguifushi.cn/bbs/index.asp) -- C++語(yǔ)言開(kāi)發(fā) (http://www.xinguifushi.cn/bbs/list.asp?boardid=63) ---- C++/Object Pascal中循環(huán)結(jié)構(gòu)的一點(diǎn)差異及討論 (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=63&id=2425) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-12-10 14:15:51 -- C++/Object Pascal中循環(huán)結(jié)構(gòu)的一點(diǎn)差異及討論 雖然在所有的編程語(yǔ)言之中,程序的執(zhí)行都無(wú)非是順序、分支和循環(huán)等幾種結(jié)構(gòu),比如說(shuō),C中的if…else,switch…case,while和do…while, 以及Pascal中的if…then…else,case…of,while…do,repeat…until,幾乎就是一一對(duì)應(yīng)的關(guān)系,只不過(guò)語(yǔ)法上有小小的差異而已。這樣的相似性使得我們?cè)谡莆找婚T語(yǔ)言之后,再學(xué)習(xí)其他語(yǔ)言就容易得多了。然而,語(yǔ)言之間的不同是細(xì)微而瑣碎的,如果不注意這些差別的話,它們遲早會(huì)從不知哪個(gè)角落跳出來(lái),讓程序員陷入debug的噩夢(mèng)。 讓我們來(lái)看一個(gè)例子。我們知道在一般的循環(huán)結(jié)構(gòu)中,fo循環(huán)和while循環(huán)是可以轉(zhuǎn)換的,例如,在Pascal中 for I:=StartValue to EndValue do …; 可以轉(zhuǎn)換成相應(yīng)的while 循環(huán): I:=StartValue; while I<=EndValue do begin …; Inc(I); end; 看起來(lái),這兩種循環(huán)是完全一樣的。別忙,真的完全一樣嗎?下面是一段Delphi代碼,你可以先心算一下,看得出來(lái)的結(jié)果應(yīng)該是多少: procedure TForm1.FormCreate(Sender: TObject); var i, j : integer; index : integer; str : string; begin i := 0; j := 3; for index:=0 to j do begin Inc(i); if j<5 then Inc(j); end; str := IntToStr(i);
i := 0; j := 3; index := 0; while index<=j do begin Inc(i); if (j<5) then Inc(j); |