最近看雷达的恒虚警检测GO-FAR算法,在两个if-elseif-else 语句中迷失了。
大致结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if A process1 elseif B process2 else process3 end if C process4 elseif D process5 else process6 end |
在这里A和C是相反的条件,之前以为如果满足条件A,那么就执行process1,那么必然不满足C,也就不会执行process4,5,6。但是实际上当满足条件A,执行process1之后,从第一个判断语句中跳出来,会进入下面的分支,若满足D,或下面的else,就可能执行process5或者6。因为前面有end。
如果再做一下修改,将elseif中间加上空格,情况就会变得又不一样,这时候相当于if A 是外面的判断条件,下面的else if B及之后的语句都是里层的判断条件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if A process1 else if B process2 else process3 end if C process4 else if D process5 else process6 end |