|
发表于 2013-4-30 09:01:19
|
显示全部楼层
本帖最后由 samsam598 于 2013-4-30 15:29 编辑
i应是在var里声明,在i:=1时获得初值,生命期直至过程结束。
在C++(c99也可以)里有这样一种情况:
- for(int i=1;i<10;i++)
- {
- printf("%d\n",i);
- }
- printf("%d\n",i);//------------------>错误,变量i 未定义
复制代码 有VB.Net2008里,也可以这样:
- For i As integer =1 To 9
- Console.Writeln("{0}",i)
- Next
- Console.Writeln("{0}",i) '-------------------------->错误,变量i 未定义
复制代码 这两种其实都是在循环体内声明变量并初始化,离开循环时变量均已销毁。而在FP里变量都要在使用之前先声明,没有象c++和VB.NET里这种声明+赋初值+循环一趟子过的语法。在FP2.7.1里即便是在嵌套过程里,外层变量都不能被内层过程识别,内层过程声明的变量也不能被外层过程识别。所以说c语言的语法灵活,也有人说pascal是紧身夹克,虽有些拘束但不会乱来;而C则是大板斧,你想怎么使都行,不过你得祈祷不要砍在自己脚上。
- procedure doOuter;
- var
- i:integer;
- procedure doInner:
- var
- j:integer;
- begin
- {内层过程}
- for i:=1 to 9 do // ------------>Error: Illegal counter variable
- for j:=1 to 9 do
- ...
- end;
- begin
- {外层过程}
- end;
复制代码 |
|