Java | 単項マイナス演算子

Java Java
スポンサーリンク

中級練習問題(応用10問)

ここでは、Javaの単項マイナス演算子(-)をさらに深く理解するための 中級練習問題(応用10問) を用意しました。

  • 型変換、オーバーフロー、浮動小数点の特例、式中での優先順位などを扱います。
  • 解答・解説付きでステップごとに理解できる構成です。

【問題1】 型変換の応用

byte b = 100;
short s = -b;
System.out.println(s);
Java

✅ 解答:

コンパイルエラー

💬 解説:

  • -bint に昇格するため、short に直接代入できません。
  • 正しくは:
short s = (short)-b;
Java

【問題2】 Integer.MIN_VALUE と絶対値

int min = Integer.MIN_VALUE;
System.out.println(Math.abs(min));
Java

✅ 解答:

-2147483648

💬 解説:

  • Math.abs(Integer.MIN_VALUE) はオーバーフローで値が変わらず負のまま。
  • int の範囲外のため +2147483648 にできません。

【問題3】 char の符号反転

char ch = 'Z';
int result = -ch + 10;
System.out.println(result);
Java

✅ 解答:

-80

💬 解説:

  • 'Z' の Unicode は 90。
  • -ch + 10-90 + 10 = -80

【問題4】 浮動小数点の符号反転

double x = 0.0;
double y = -x;
System.out.println(1.0 / y);
Java

✅ 解答:

-Infinity

💬 解説:

  • -0.0y に代入される。
  • 除算で符号が反映され、1.0 / -0.0 = -Infinity

【問題5】 式中での優先順位

int a = 5;
int b = 2;
int c = -a / b;
System.out.println(c);
Java

✅ 解答:

-2

💬 解説:

  • 単項マイナスは除算より優先される。
  • (-5) / 2 = -2(整数除算)

【問題6】 byte 型の複雑式

byte a = 10;
byte b = 3;
byte c = (byte)(-a + b);
System.out.println(c);
Java

✅ 解答:

-7

💬 解説:

  • -a は int なのでキャスト必須。
  • -10 + 3 = -7(byte) で byte 型に戻す。

【問題7】 インクリメントと組み合わせ

int x = 3;
System.out.println(-++x);
Java

✅ 解答:

-4

💬 解説:

  • ++x は先に x を 1 増やす → 4
  • その後 - が適用され → -4

【問題8】 複雑な式

int a = 2;
int b = 3;
int c = 4;
System.out.println(-a + b * -c);
Java

✅ 解答:

-14

💬 解説:

  1. -a → -2
  2. -c → -4
  3. b * -c → 3 * -4 = -12
  4. 最後に -a + b*-c → -2 + (-12) = -14

【問題9】 小数と整数の組み合わせ

int a = 5;
double b = -2.5;
double result = -a + b;
System.out.println(result);
Java

✅ 解答:

-7.5

💬 解説:

  • -a → -5
  • -5 + (-2.5) → -7.5

【問題10】 マイナスと括弧の応用

int x = 2;
int y = 3;
int z = - (x + y);
System.out.println(z);
Java

✅ 解答:

-5

💬 解説:

  • 括弧内で先に x + y = 5
  • その後 - を適用 → -5

中級ポイントまとめ

項目内容
型変換byte/short → int に自動昇格、再代入はキャスト必須
MIN_VALUEInteger.MIN_VALUE を反転するとオーバーフロー
char符号反転すると数値扱いになる
double-0.0 の挙動に注意
式中の順序単項マイナスは多くの演算より優先される
複雑式括弧で順序を明示すると理解しやすい

💡 この10問をマスターすれば、単項マイナス演算子はほぼ完全に理解できます。

タイトルとURLをコピーしました