1

我正在将 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 行的代码,还是跳过它?

任何方向将不胜感激......

4

4 回答 4

4

是的,不管在第 85 行对布尔条件的评估如何,第 95 行都将被执行,但是如果 85 评估为真,那么第 90 行将被跳转,因此不会被执行。

于 2011-12-20T02:33:06.993 回答
2

它将执行第 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])
于 2011-12-20T02:32:10.130 回答
1

显然代码片段有一个伪 IF/ELSE 结构,逻辑看起来像:

如果不满足第 85 行的条件,则 QBasic 继续 90 和 95。如果满足第 85 行的条件,则 QBasic 继续 95 并向前。

于 2011-12-20T02:30:40.973 回答
0

THEN 95是 的缩写THEN GOTO 95,它将执行指针跳转到第 95 行。

REMLINE.BAS是从 Microsoft 基本程序中删除行号的程序。它仅删除那些不是以下语句之一的对象的行号:GOSUB、RETURN、GOTO、THEN、ELSE、RESUME、RESTORE 或 RUN。

BaConBCX可以把你的 BASIC 变成 C。

于 2012-03-28T07:49:52.987 回答