if 语句总是把其后的cond完全计算完成,实际上没有必要,一般语言都是计算到false就不计算后面的语句了。
下面的代码看起来没有问题, 其实执行会导致数组越界。
原因就是公式解释执行的时候过多得把逻辑上不会发生的条件(HLp0[wlen0]<=0)计算了。
算不了bug,但属于缺陷。
VARIABLE:HLp0[10]=0;
HLp0[2]:=-3;
HLp0[3]:=3;
wlen0:=3;
dir:=1;
if wlen0>2 then
begin
if dir>0 and HLp0[wlen0]>=0 then
Wlen0:=Wlen0-5 ;
if dir<0 and HLp0[wlen0]<=0 then
Wlen0:=Wlen0-20 ;
end;
WL: WLEN0,NOAXIS;