我正在处理一些旧的qbasic代码。后藤的所有声明都一团糟。下面这行总是会返回,我说得对吗?
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中使用过,我看不出它会被执行。
是的,我相信你的评估是正确的。冒号是一个语句分隔符,可以让您在同一行上有多个语句。假设子程序返回55000,那么这一行也应该返回。
我错了。运行此程序:
if 1=2 then print "Never printed" : print "how about this?"
print "End of program"
在qb64.net上只打印CCD_ 2。我认为它的语法细节与Qbasic的相同,尽管它是一种逆向工程。
顺便说一句,此代码是以预QBasic风格编写的(例如使用GOSUB和行号)。QBasic经常附带一个脚本(remline.bas,我相信它被称为),它应该有助于将这类程序翻译成一种新的风格。不过我自己从来没有用过。