単項マイナス総合応用テスト(20問)
ここでは、単項マイナス演算子の総合応用テスト(20問)を作成します。
- 配列・メソッド・式の組み合わせをランダムにした中上級者向け問題です。
- 解答・解説付きで、単項マイナスを自在に扱える力を養います。
【問題1】
int a = 5;
System.out.println(-a);
Java✅ 解答: -5
解説: a の符号を反転。
【問題2】
int x = -10;
System.out.println(-x);
Java✅ 解答: 10
解説: 負の数を反転して正に。
【問題3】
byte b = 3;
byte c = -b;
Java✅ 解答: コンパイルエラー
解説: -b は int 型になるためキャストが必要。byte c = (byte)-b;
【問題4】
int min = Integer.MIN_VALUE;
System.out.println(-min);
Java✅ 解答: -2147483648
解説: オーバーフローで値が変わらない。
【問題5】
char ch = 'C';
System.out.println(-ch + 1);
Java✅ 解答: -66
解説: 'C' = 67 → -67 + 1 = -66
【問題6】
double z = -0.0;
System.out.println(1.0 / z);
Java✅ 解答: -Infinity
解説: -0.0 は符号があるため、除算で符号が影響。
【問題7】
int[] arr = {1,2,3};
System.out.println(-arr[1]);
Java✅ 解答: -2
解説: 配列の要素 2 に符号反転。
【問題8】
int[] arr = {2,4,6};
arr[0] = -arr[2];
System.out.println(arr[0]);
Java✅ 解答: -6
解説: arr[2]=6 → -6 を代入。
【問題9】
public static int getVal() { return -7; }
System.out.println(-getVal());
Java✅ 解答: 7
解説: -(-7)=7
【問題10】
int a = 2;
int b = 3;
System.out.println(-a * b);
Java✅ 解答: -6
解説: (-2) * 3 = -6
【問題11】
byte[] bArr = {10,20};
byte x = (byte)-bArr[1];
System.out.println(x);
Java✅ 解答: -20
解説: byte にキャストして符号反転。
【問題12】
int[] arr = {1,2,3};
System.out.println(-arr[0] + arr[1] * -arr[2]);
Java✅ 解答: -7
解説: -1 + 2*(-3) = -7
【問題13】
int x = 3;
System.out.println(-++x);
Java✅ 解答: -4
解説: ++x=4 → -4
【問題14】
int[] arr = {1,2,3};
System.out.println(-arr[-1 + 3]);
Java✅ 解答: -3
解説: インデックス計算:-1+3=2 → arr[2]=3 → -3
【問題15】
public static int doubleIt(int x){ return x*2; }
int[] arr = {1,2};
System.out.println(-doubleIt(arr[0]));
Java✅ 解答: -2
解説: arr[0]=1 → doubleIt=2 → -2
【問題16】
int[] nums = {2,4,6};
int sum=0;
for(int i=0;i<nums.length;i++){ sum+=nums[i]; }
System.out.println(-sum);
Java✅ 解答: -12
解説: 配列合計 = 12 → -12
【問題17】
double a = -1.5;
double b = -a + 2.5;
System.out.println(b);
Java✅ 解答: 4.0
解説: -(-1.5)=1.5 → 1.5+2.5=4.0
【問題18】
int[] arr = {3, -4};
System.out.println(-(-arr[1]));
Java✅ 解答: -4
解説: ネスト符号反転:-(-(-4))=-4
【問題19】
int a = 2;
int b = 3;
int c = 4;
System.out.println(-a + b * -c);
Java✅ 解答: -14
解説: -2 + 3*-4 = -2 + -12 = -14
【問題20】
int[] arr = {1,2,3};
System.out.println(- (arr[0] + arr[1] + arr[2]));
Java✅ 解答: -6
解説: 括弧内で合計 1+2+3=6 → 符号反転 → -6
総合ポイント
- 単項マイナスは 符号反転
- 型変換 に注意:byte/short はキャストが必要
- Integer.MIN_VALUE はオーバーフロー
- 配列・メソッド・式 と組み合わせると計算順序に注意
- 浮動小数点 -0.0 やネストした符号も理解する
💡 この20問をマスターすれば、単項マイナスのほぼすべての応用ケースを理解できます。
