我正在将 GW-BASIC 代码转换为 C#,并且通常在 BASIC 语言方面的经验非常有限。我试图了解 IF...THEN...GOTO 语句的行为方式。例如,我有以下声明:
85 IF M(3,1)>M(2,1) THEN 95
90 M(3,1)=M(3,1)+P2
95 Z1=R1*(90.567-41.685/M(2,3))
我的问题是:如果第 85 行的条件不满足,它还会执行第 95 行的代码,还是跳过它?
任何方向将不胜感激......
是的,不管在第 85 行对布尔条件的评估如何,第 95 行都将被执行,但是如果 85 评估为真,那么第 90 行将被跳转,因此不会被执行。
它将执行第 95 行的代码。then 语句使程序跳转到第 95 行并执行该行。
这相当于:
if ( M[3,1] <= M[2,1] ) {
M[3,1] = M[3,1] + P2
}
Z1=R1*(90.567-41.685/M[2,3])
显然代码片段有一个伪 IF/ELSE 结构,逻辑看起来像:
如果不满足第 85 行的条件,则 QBasic 继续 90 和 95。如果满足第 85 行的条件,则 QBasic 继续 95 并向前。
THEN 95
是 的缩写THEN GOTO 95
,它将执行指针跳转到第 95 行。
REMLINE.BAS是从 Microsoft 基本程序中删除行号的程序。它仅删除那些不是以下语句之一的对象的行号:GOSUB、RETURN、GOTO、THEN、ELSE、RESUME、RESTORE 或 RUN。