5

我正在研究一些旧的 qbasic 代码。所有的 Goto 语句都是一团糟。我是否正确,以下行将始终返回?

IF FLAG = 0 THEN TARGET = X: GOSUB 55000: TEMP = XI - TEMP2: RETURN 

因此,如果我理解正确,冒号将同一行上的语句分开。唯一与 TARGET = X相关if。GOSUB、TEMP = 和 RETURN 将始终执行。正确的?

我的部分困惑是因为下一行是

IF FLAG = 1 THEN STEP = X: GOSUB 115000

而且由于第二条语句的标签从未在 GOTO 中使用过,我看不到它会被执行。

4

1 回答 1

5

是的,我相信你的评估是正确的。冒号是一个语句分隔符,可以让您在同一行上有多个语句。假设您的子程序在 55000 返回,该行也应该返回。

我错了。运行这个程序:

if 1=2 then print "Never printed" : print "how about this?"
print "End of program"

仅在qb64.net上打印End of program。我假设它的语法细节与 Qbasic 的相同,尽管它是一种逆向工程。

顺便说一句,这段代码是以 QBasic 之前的风格编写的(例如,使用 GOSUB 和行号)。QBasic 经常附带一个脚本(remline.bas,我相信它被称为),它应该有助于将这些类型的程序转换为更新的样式。不过,我自己从未使用过它。

于 2013-08-08T21:08:05.220 回答