我正在尝试将另一位作者的一些 C 代码重写为 Igor Pro(类似于 C 的符号)。代码可在此处获得。
我不知道如何处理这些行if ((umin+=input[k+1]-vmin)<minlambda)
以及else if ((umax+=input[k+1]-vmax)>lambda)
它们如何进行更新umin
和的顺序umax
,以及 if/elseif 语句评估为真或假如何影响更新..
具体来说:
在第 99-107 行有:
if ((umin+=input[k+1]-vmin)<minlambda) {
do output[k0++]=vmin; while (k0<=kminus);
vmax=(vmin=input[kplus=kminus=k=k0])+twolambda;
umin=lambda; umax=minlambda;
} else if ((umax+=input[k+1]-vmax)>lambda) {
do output[k0++]=vmax; while (k0<=kplus);
vmin=(vmax=input[kplus=kminus=k=k0])-twolambda;
umin=lambda; umax=minlambda;
} else { /*blah blah */ }
我已将其重构为:
if ((umin+=input[k+1]-vmin) < minlambda) //Todo
do
output[k0] = vmin
k0+=1
while(k0 <= kminus)
k=k0
kminus=k
kplus=kminus
vmin=input[kplus]
vmax = (vmin) + twolambda
umin = lambda
umax = minlambda
elseif ((umax+=input[k+1]-vmax) > lambda) //Todo
do
output[k0]=vmax
k0+=1
while(k0 <= kplus)
k=k0
kminus=k
kplus=kminus
vmax=input[kplus]
vmin = (vmax) - twolambda
umin = lambda
umax = minlambda
else //blah blah
umin 和 umax 是否只有在 if 语句评估为 true 时才会更新?还是级联?IF(umin) -> false,umin 更新,ELSEIF(umax) -> true,umax 更新,但 IF(umin) -> true,umin 更新,umax 未更新?还是其他变种?
关于相同代码的另一个问题。
编辑:固定标题。添加了igor标签