今回も問題を解いて理解を深めましょう。
問題
以下のコードを実行した場合の出力は何になるでしょうか?正しいものを選びなさい。
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 2;
int c = 5;
int result = a - b * c + (a + c) / b;
System.out.println(result);
}
}
選択肢
- A. 8
- B. 18
- C. 10
- D. 2
答えと解説
回答を見る
答え
A. 8
解説
基本説明
Javaでは演算子には優先順位があります。優先順位が高いものから順に評価され、同レベルの演算子については左から右へ順に評価されます。
プログラムコードでは、まず乗算*
、除算/
、剰余算%
が優先されます。それらが計算された後に、加算+
、減算-
が実行されます。
このコードにおいて、b * c
が先に計算され、その結果の10がとして計算されます。そして、括弧内の(a + c)
/bの計算が加わります。
誤答理由
よくある誤りは演算の順番を間違えてしまうことです。これは演算子の優先順位を正しく理解していないことが原因です。
例えば、a - b * c
と(a + c) / b
のどちらが先に計算されるかを誤解していると、結果として全く異なる答えが得られてしまいます。
つまずきポイント
まず、演算子の優先順位や括弧を使った計算の順番を正しく把握することが大切です。プログラム上で複雑な計算を行う場合は、括弧を活用して自分の意図した計算順序を保証しましょう。
出力が予想と異なる場合、優先順位や括弧の使用に原因があることが多いため、コードを何度も確認し、どの部分がどの順番で実行されるのかをしっかり追求することが大切です。
発展知識
Javaにおける演算子の優先順位はプログラミングを行う上で非常に重要な知識です。特に、他の言語と混同しないように注意が必要です。
例えば、括弧を忘れると意図を正しく反映できなくなることがあります。(a + b) \* c
とa + (b \* c)
で結果が異なるのと同様に、全体のコードを見渡して、意図した計算順序が実現できるような構造を考えましょう。