インクリメント演算子とデクリメント演算子とは
インクリメント演算子「++」とデクリメント演算子「--」は、変数の値に対して、1を加算したり、減算したりする演算子です。
記述方法は、変数の前につける「前置」と、変数の後ろにつける「後置」があります。
記述方法 | 名称 | 意味 |
++num | 前置インクリメント | 値の取得前に「変数num」を「+1」する |
num++ | 後置インクリメント | 値の取得後に「変数num」を「+1」する |
--num | 前置デクリメント | 値の取得前に「変数num」を「-1」する |
num-- | 後置デクリメント | 値の取得後に「変数num」を「-1」する |
インクリメント演算子、デクリメント演算子の使い方
インクリメント演算子、デクリメント演算子には、以下のような使い方があります。
単独で使用した場合
以下は、インクリメント演算子、デクリメント演算子を単独で使用した場合の結果です。
計算としてはインクリメント演算子、デクリメント演算子の計算なのでシンプルです。
int num = 10;
int a = ++num ;
System.out.println(a);
[出力結果]
11
変数numの値「10」を取得する前に「+1」するので、「11」が変数aに代入される。
int num = 10;
int a = num++ ;
System.out.println(a);
[出力結果]
10
変数numの値「10」を取得した後に「+1」するので、「+1」する前の「10」が変数aに代入される。
int num = 10;
int a = --num ;
System.out.println(a);
[出力結果]
9
変数numの値「10」を取得する前に「-1」するので、「9」が変数aに代入される。
int num = 10;
int a = num-- ;
System.out.println(a);
[出力結果]
10
変数numの値「10」を取得した後に「-1」するので、「-1」する前の「10」が変数aに代入される。
他の演算子と組み合わせて使用した場合
インクリメント演算子、デクリメント演算子だけでなく、「+」「-」などの演算子も組み合わせて計算させる場合、「前置」「後置」を意識した計算が必要となります。
int num = 10; int a = num++ + 10; System.out.println("a:" + a); System.out.println("num:" + num); [出力結果] a:20 num:11 変数numの値「10」を取得した後に「+1」するので、 「+1」する前の「10」が利用され、 「10 + 10」の計算結果が変数aに代入される。 取得後には「+1」されるので、次に取得するときには「11」となっている。
より理解を深めるために、同じ変数を使って計算してみましょう。
int num = 10; num = num++ + num; ① ② System.out.println(num); [出力結果] 21 ①:「num++」は「取得後に+1」なので、変数numから取得する値は「10」です。 ②:変数numから取得する値は「+1」された「11」ということになり、 「10 + 11 = 21」が計算されます。
例題
上記を踏まえ、試験の出題例を紹介します。
以下のコードの実行結果として出力される値はいくつか。 public class Hoge { public static void main(String[] args){ int a = 10; int b = a++ + a + a-- - a-- + ++a ; System.out.println(b); } }
・・・
正解は「32」です。
計算としては以下となります。
int b = a++ + a + a-- - a-- + ++a ;
⇩ ⇩ ⇩
int b = 10 + 11 + 11 - 10 + 10 ;
可読性は最悪ですよね…。
問題を解く際は、可読性をよくするために、メモに書きだしたりすると良いかもしれません。
計算ミスはもったいないですから…。
コメント