以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- C++语言开发 (http://sun4.cn/bbs/list.asp?boardid=63) ---- C++/Object Pascal中循环结构的一点差异及讨论 (http://sun4.cn/bbs/dispbbs.asp?boardid=63&id=2425) |
-- 作者:wangxinxin -- 发布时间:2010-12-10 14:15:51 -- C++/Object Pascal中循环结构的一点差异及讨论 虽然在所有的编程语言之中,程序的执行都无非是顺序、分支和循环等几种结构,比如说,C中的if…else,switch…case,while和do…while, 以及Pascal中的if…then…else,case…of,while…do,repeat…until,几乎就是一一对应的关系,只不过语法上有小小的差异而已。这样的相似性使得我们在掌握一门语言之后,再学习其他语言就容易得多了。然而,语言之间的不同是细微而琐碎的,如果不注意这些差别的话,它们迟早会从不知哪个角落跳出来,让程序员陷入debug的噩梦。 让我们来看一个例子。我们知道在一般的循环结构中,fo循环和while循环是可以转换的,例如,在Pascal中 for I:=StartValue to EndValue do …; 可以转换成相应的while 循环: I:=StartValue; while I<=EndValue do begin …; Inc(I); end; 看起来,这两种循环是完全一样的。别忙,真的完全一样吗?下面是一段Delphi代码,你可以先心算一下,看得出来的结果应该是多少: 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); |