質問: first_term / second_term ; END-EVALUATE PERFORM Push *> もし数字であればtempはそのままpushされることになる (remind: ) END-IF. Push SECTION. *> tempに保持されている値をスタック領域にpush(保存・投げ込む) IF stack_pos <= 10 THEN MOVE temp TO stack_data(stack_pos) ADD 1 TO stack_pos END-IF. Pop SECTION. *> tempに、スタックに保存されている値をpopして格納(取り出す) IF stack_pos > 1 THEN SUBTRACT 1 FROM stack_pos MOVE stack_data(stack_pos) TO temp END-IF. Result_Display SECTION. PERFORM Pop. MOVE temp TO result. DISPLAY "Result : " result. ``` ### 試したこと ・ > 4 3 + で7が出るところに8が出力されてしまいます。 ・ > 4 4 + では8が出力されます。 よろしくお願いいたします。
回答: 数値を push する位置がおかしくないですか? else ブロックではなく、then ブロックじゃないかな? then ブロックでスタックすると書いてあるけど、してないように見えますけど then ブロックは入力値が数値の時で、else は演算子の時ですよね? だとすると else ブロックに push があっても意味がないですよね?