AI作成・AIで再検証済(有資格者監修なし)1Z0-815-JPN 対応
算術演算子(剰余演算子 % と負数の符号規則)難易度 標準無料

次のコードの出力として正しいものを選べ。

1  public class Q2 {
2      public static void main(String[] args) {
3          int a = -7 % 3;
4          int b = 7 % -3;
5          System.out.println(a + " " + b);
6      }
7  }
  1. A-1 1
  2. B2 -2
  3. C-1 -2
  4. DArithmeticException がスローされる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・AIで再検証済

解説

Java の剰余演算子 % の結果の符号は左辺(被除数)の符号と一致する。これは (a / b) * b + (a % b) == a という恒等式から導かれる(/ がゼロ方向への切り捨てであることと整合する)。

  • -7 % 3:-7 / 3 はゼロ方向切り捨てで -2。-2 * 3 = -6。-7 - (-6) = -1 → -1。
  • 7 % -3:7 / -3 はゼロ方向切り捨てで -2。-2 * -3 = 6。7 - 6 = 1 → 1。

よって a=-1, b=1、出力は -1 1。

各誤答が違う理由
  • B剰余の符号を除数(右辺)に合わせて考えた誤り。Java の % の符号は被除数(左辺)の符号に従う。
  • C7 % -3 の符号を左辺 7(正)に合わせず右辺の符号に引っ張られた誤り。正しくは被除数が正なので結果も正の 1。
  • D% が例外を投げるのは除数が0のときだけ。ここでの除数は 3・-3 でありゼロ除算ではない。
ひっかけ: 「剰余の符号は除数(右辺)に従う」という誤解が多い。実際は被除数(左辺)の符号に従う。-7 % 3 が正の 2 になる、というのは誤り。
コマンド例と想定される挙動(未実行)
出力:
-1 1
公式ドキュメント・関連JLS SE11 §15.17.3 Remainder Operator %↗
AIが作成し、別の手順のAIで誤りを点検した解説です(有資格者による監修は経ていません)

この問題集の作り方

  1. 問題と解説はAIが作成しています。この資格の問題に、有資格者(著者)の監修は入っていません。
  2. 各問に、公式ドキュメントの出典リンクを付けています。書いてあることは、出典に当たって確かめられます。
  3. 誤答の選択肢それぞれに、なぜ誤りなのかの理由を書いています。
  4. 誤りを見つけたら報告できます。原則として無償で訂正・削除します。
  5. 各試験の運営団体とは無関係の非公式教材です。合格を保証するものではありません。
この分野をもっと解いて、得点源に
演算子 を含む問題を分野別に演習できます。
演習する →