比如:procedure aa;
var a:integer;
procedure zz(i:integer);
var kao :integer;
begin
xxxxxxxxxxx //这段代码略
while kao<>100 do
begin
zz(kao+1);
xxxxxxxx//略
end;
end;
begin
XXXXXXXXXXX;//执行过程aa的部分
end;
请问下面的while kao<>10 do
begin
zz(kao+1);
xxxxxxxx//略
end;
里的每次在执行zz(kao+1)后,xxxxxxxxx还执行不执行?也就是问当执行到zz(kao+1)时,程序
会跳到zz的开始地方还是等while里的xxxxxx部分的代码也执行完后在返回到zz过程的开始部分
继续循环执行?可以理解为如果我设kao=0,那么while里的xxxxxxxxxx会被执行多少次?
var a:integer;
procedure zz(i:integer);
var kao :integer;
begin
xxxxxxxxxxx //这段代码略
while kao<>100 do
begin
zz(kao+1);
xxxxxxxx//略
end;
end;
begin
XXXXXXXXXXX;//执行过程aa的部分
end;
请问下面的while kao<>10 do
begin
zz(kao+1);
xxxxxxxx//略
end;
里的每次在执行zz(kao+1)后,xxxxxxxxx还执行不执行?也就是问当执行到zz(kao+1)时,程序
会跳到zz的开始地方还是等while里的xxxxxx部分的代码也执行完后在返回到zz过程的开始部分
继续循环执行?可以理解为如果我设kao=0,那么while里的xxxxxxxxxx会被执行多少次?
不过你这个结构好可怕呀,怎想都很乱
一般嵌套里是用if确定终止条件的:
if kao<>100 then
begin
zz(kao+1);
xxxxxxxx//略
end;
这种结构偶还是第一次看到。
然后回到while kao<>100 do,判断条件为否,
跳出循环,执行后面的语句,
然后退出倒数第二次调用,再执行xxxxxxxxxxx
回到while kao<>100 do,判断条件为否,(以后始终为否)
依次类推...
100次
就是说每次执行zz(kao+1)后,肯定要跳到zz的开头,
这样跳转100次之后,判断while kao<>100的条件为否,
这时会结束这个函数,这样就回到了最后一次调用zz(kao+1)的后面,
也就是while里的xxxxxxxxxxx,
然后到while的end,由于这里是循环的结束,会跳到循环的判断条件,
也就是while那一句去,判断条件为否,结束函数,再回到倒数第二次调用zz(kao+1)的后面,
依次类推...
这个我怎么不理解呢!笨啊!
zz(kao+1);
xxxxxxxxxxxxx
那么在执行完zz(kao+1)之后,是不是肯定要执行xxxxxxxxxxx?
只不过这里zz(kao+1)不是普通的语句,是调用一个函数,
那么在调用这个函数之后,一样要执行xxxxxxxxxxxxx
这么说你明白了么?
嵌套是很复杂的语句,最好不要轻易使用。记得当年c语言期末考试,最后一道大题就是关于嵌套的^_^