我正在分析这个遗留代码:
If (X) then
if Cnt < 4 then Cnt = Cnt + 1 ; 4 samples
Else
if Cnt > 0 then Cnt = Cnt-1 ; keep history
EndIf
哪个Cnt
根据X
我想知道其他声明是否像他们的缩进一样意味着他们认为它确实存在。
代码可能更像是:
If (X) then
if Cnt < 4 then
Cnt = Cnt + 1 ; 4 samples
Else
if Cnt > 0 then
Cnt = Cnt-1 ; keep history
EndIf
其中Cnt
到达4然后在X为真时切换开/关。
这是使用BCI51编译的基本功能。那是1990年由Systronix开发的8051的基本编译器。
嵌套的if-else对如何在basic中解析?
答案 0 :(得分:1)
我记得QBasic是如何做到这一点的,我将假设这个编译器正在做同样的事情。这真的是在拉我的记忆,所以我可能错了。
如果IF THEN
后面跟着同一行的代码,那么它就完全包含了。因此
if Cnt < 4 then Cnt = Cnt + 1
else
...
将是非法的,您必须将Cnt = Cnt + 1
放在其自己的行上以创建多行IF
语句。因此,ELSE
与最顶层IF
由于在原始代码中,Cnt = Cnt + 1
和Cnt = Cnt - 1
与IF THEN
位于同一行,因此我会将代码解释如下:
If (X) then
If Cnt < 4 Then
Cnt = Cnt + 1 ; 4 samples
EndIf
Else
If Cnt > 0 Then
Cnt = Cnt-1 ; keep history
EndIf
EndIf
所以,是的,我相信代码的操作就像缩进所暗示的那样。
如果您发现任何更改,是否可以修改代码并进行测试?