過去問解きまくり研究所 ホーム

平成22年度 春期 午前 問22

コンピュータ構成要素

3アドレス命令に関する問題

次の一連の3アドレス命令で得られる結果 x を表す式はどれか。ここで,3アドレス命令では,三つのオペランドを用いた命令 “c=a *op* b” を “*op*(a,b,c)” として表記する。*op* は一つの演算子を表し,結果 x を表す式においては優先順位の高い順に *,/,+,− とする。

/(c,d,w1)
+(b,w1,w2)
/(e,f,w3)
−(w3,g,w4)
*(w2,w4,x)
答えと解説を見る

✓ これが正解エ(b+c/d)*(e/f−g)

解説

一時変数の中身を上から順に書き下すと式が戻ります。

3アドレス命令は、二つの入力と結果の置き場所を並べて書く形なので、上から順に中身を追いかければ元の式が復元できます。一行目で c を d で割った値が w1 に入り、二行目で b にそれを足した値が w2 になります。三行目で e を f で割った値が w3 に入り、四行目でそこから g を引いた値が w4 になります。最後の行はこの w2 と w4 を掛けたものを x としています。つまり最後の掛け算が受け取るのは、足し算で完成した値と、引き算で完成した値の二つです。設問は掛け算が最も強く、次に割り算、その後に足し算と引き算という順を与えているので、この二つはどちらも括弧でくくらないと先に完成しません。判定の軸は、最後の乗算に入る時点で和と差が出来上がっている書き方になっているかどうかです。

ほかの選択肢はなぜ違うのか

出典:平成22年度 春期 基本情報技術者試験 午前 問22

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)