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

また、2 番目のステートメントのラベルは 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 に答える