AI作成・AIで再検証済(有資格者監修なし)1Z0-815-JPN 対応
算術演算子(整数除算の切り捨て)難易度 標準無料

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

1  public class Q1 {
2      public static void main(String[] args) {
3          int a = 7 / 2;
4          int b = -7 / 2;
5          System.out.println(a + " " + b);
6      }
7  }
  1. A3 -3
  2. B3 -4
  3. C3.5 -3.5
  4. Dコンパイルエラー(負の数を int 変数の除算に使えない)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・AIで再検証済

解説

int 同士の除算 / は小数点以下を切り捨てる(ゼロ方向へ丸める=truncation)。数学的な「切り下げ(floor)」ではない点に注意する。

  • 7 / 2 = 3.5 → ゼロ方向に切り捨てて 3。
  • -7 / 2 = -3.5 → ゼロ方向に切り捨てて -3(floor すると -4 になるがJavaはそうならない)。

したがって a=3, b=-3 となり、出力は 3 -3。

各誤答が違う理由
  • B負数の除算を floor(負の無限大方向への切り捨て)だと誤解した答え。Java の整数除算はゼロ方向へ切り捨てるため -7/2 は -4 ではなく -3。
  • Ca・b はどちらも int 型。int / int の結果は常に int(整数)になり、小数部は保持されない。
  • D負の整数リテラルは通常の int 値であり、除算演算子 / に何ら制約はない。コンパイルは問題なく通る。
ひっかけ: 負の数の除算を「floor(負の無限大方向への切り捨て)」だと誤解しやすい。Java の整数除算は常にゼロへ向かって切り捨てるので、-7 / 2 は -4 ではなく -3。
コマンド例と想定される挙動(未実行)
出力:
3 -3
公式ドキュメント・関連JLS SE11 §15.17 Multiplicative Operators↗
AIが作成し、別の手順のAIで誤りを点検した解説です(有資格者による監修は経ていません)

この問題集の作り方

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