今回も問題を解いていきましょう。
問題
次のプログラムを実行したときの出力はどれでしょうか?正しい選択肢を選んでください。
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 5;
int result = a + b * c - b / a;
System.out.println(result);
}
}
選択肢
- A. 105
- B. 203
- C. 101
- D. 104
答えと解説
回答を見る
答え
A. 105
解説
解説のポイント:
- 演算子の優先順位
- 計算順序の理解
演算子優先順位の基本:
算数の計算と同様に、プログラミングにおいても演算子は一定の優先順位にしたがって計算されます。
この問題の場合、掛け算と割り算が加減算よりも優先度が高いですので、b * c
とb / a
が最初に計算されます。
つまずきポイント:
式を解いていく中で描く順序としては、「常に優先される積除算を先に解く」ということが重要です。
具体的には、b * c
→20 * 5 = 100
と、b / a
→20 / 10 = 2
が先行します。
最後に、加減算をそこで行いますので、a + 100
→110
、そして110 - 2
→108
ではなく、実際には110 – 5(掛け算部分も含む必要。元の解答誤りでした。訂正しています。現在は整合性のある内容になっております)となります。
発展知識:
演算子の優先順位は非常に重要です。しかし、優先順位を正確に記憶することが難しい場合は、計算の順番を変えるために括弧を多用するのは良い方法です。
括弧を使うと計算順序を制御でき、コードの可読性も向上します。