我正在研究一些旧的qbasic代码。所有Goto语句都是混乱的。我是否正确,以下行将始终返回?
IF FLAG = 0 THEN TARGET = X: GOSUB 55000: TEMP = XI - TEMP2: RETURN
因此,如果我理解正确,冒号就会在同一行上分隔语句。 if
仅适用于TARGET = X.GOSUB,TEMP =和RETURN将始终执行。正确的吗?
我的一部分困惑是因为下一行是
IF FLAG = 1 THEN STEP = X: GOSUB 115000
由于第二个语句的标签从未在GOTO中使用过,所以我看不到它会被执行。
答案 0 :(得分: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,我相信它被称为),它应该有助于将这些类型的程序转换为更新的样式。但我自己从未使用过它。