逆ポーランド表記法(後置記法)で表現されている式ABCD-×+において,A=16,B=8,C=4,D=2のときの演算結果はどれか。
逆ポーランド表記法による式AB+は,中置記法による式A+Bと同一である。
正答1
解説
正解は1です。
逆ポーランド表記法(後置記法)は、演算子を被演算子の後ろに書く表記です。
左から読み、値はスタックに積み、演算子が来たら直前の2つの値を取り出して計算します。
【計算】
A、B、C、Dの順に16、8、4、2をスタックに積みます。
「-」が来たので、上の2つを取り出してC-D=4-2=2を計算し、2を積みます。
スタックは16、8、2になります。
「×」が来たので、B×2=8×2=16を計算し、16を積みます。
スタックは16、16になります。
「+」が来たので、A+16=16+16=32を計算します。
したがって演算結果は32です。
中置記法で書くとA+B×(C-D)という式になります。
【選択肢別解説】
1:○ 後置記法の式を規則どおりに評価すると32になります。
2:× 46は、A+B×C-Dと演算の順序を誤って計算した値です。
正しくはC-Dを先に計算するので32になります。
3:× 48は、(A+B)×(C-D)と計算した値です。
後置記法ではAとBの加算は最後に行われるので、正しくは32です。
4:× 94は、(A+B)×C-Dと計算した値です。
式の構造を読み違えており、正しくは32です。
【ポイント】
後置記法は括弧を使わずに計算順序を表せるため、スタックを使った式の評価やコンパイラで利用されます。
中置記法に直すときは、演算子が出るたびに直前の2項を括弧でくくると確実です。