有以下程序请大虾们解释一下它的执行顺!
program aa;
var a,x,y,z:integer;
function q(m:integer):integer;
begin
z:=z+m;
q:=succ(m)
end;
begin
z:=3;
a:=q(2)*q(z); {主要是这句的执行?}
writeln(a:3,z:3);
readln
end.
执行结果为:12 8
program aa;
var a,x,y,z:integer;
function q(m:integer):integer;
begin
z:=z+m;
q:=succ(m)
end;
begin
z:=3;
a:=q(2)*q(z); {主要是这句的执行?}
writeln(a:3,z:3);
readln
end.
执行结果为:12 8
1. q(2) = 3,这时z= (2+3);
2. q(z) = q(5) = 6; z = 5+ 5=10
3 a = 3 *6 = 18;
s1
....实际上执行的是
1. z<>nil
2. z.GetParams()=1,因为z<>nil执行在前,所以隐含了z<>nil,否则报错
可以拆解为:
if z<>nil then
begin
if z.GetParams()=1 then
end;另:
IsOK :=CheckBox1.Checked and (Application.MessageBox('确认吗?','信息',MB_YESNO+MB_ICONQUESTION) = ID_YES);