今日は、演算子の優先順位について学んでいきましょう。
問題
次のコードスニペットを実行した場合、出力はどれになるでしょうか?正しい選択肢を選んでください。
public class Main {
public static void main(String[] args) {
int result = 2 + 3 * 4 - 5;
System.out.println("Result: " + result);
}
}
選択肢
- A. Result: 25
- B. Result: 9
- C. Result: 17
- D. Result: 12
答えと解説
回答を見る
答え
B. Result: 9
解説
基本説明:
この問題では、演算子の優先順位と結合規則を理解しているかを確認します。
Javaプログラムでは、*
(乗算)や/
(除算)は+
(加算)や-
(減算)よりも高い優先順位を持ちます。
したがって、計算はまず3 * 4
が行われ、その結果12
が使用されます。
最終的な計算式は2 + 12 - 5
となり、14 - 5
の結果、9
が出力されます。
誤答理由:
AやC、Dを選んだ人は、おそらく演算子の優先順位が間違って認識していたと考えられます。
例えば、左から順番に計算を行ってしまったり、乗算を無視して記述の順に計算すると誤った結果になります。
これらの誤答は、数学的な計算ルール(優先順位)を正しく適用することの重要性を再確認する必要があります。
つまずきポイント:
初心者がつまずくポイントとして、演算順序を無視して期待されない結果を出力するということがあります。
演算子の優先順位はプログラミングで重要な概念であるため、具体例を多く用いて繰り返し学習する必要があります。
プログラムを書くときには、優先順位を示すための括弧を意識して使うと良いでしょう。
発展知識:
プログラミングの他の言語でも同様に、演算子にはそれぞれ優先順位(precedence)と結合規則(associativity)が存在します。
ジェネレーター関数やラムダ式など、複雑な構文で計算が絡む場合など、意図しない動作を避ける一助となります。
言語仕様書などで一度、詳細な演算子の優先順位表を確認しておくことも重要です。