単項演算子(++,--)

プログラミング用語で変数の値を1加算することを「インクリメント」と呼びます。
逆に変数の値から1減算することを「ディクリメント」と呼びます。
単項演算子とは、「変数」又は「値」に対して1つの演算子(オペランド)の事を呼びます。

本頁では、「++(インクリメント)」「--(ディクリメント)」について説明します。

「~(ビット反転)」は、ビット演算子で「!(NOT)」は論理演算子で説明します。

インクリメントとディクリメント

単項演算子 表記方法 説明
インクリメント ++ 変数++ 又は ++変数
変数の値に1を加算する
++変数を前置と呼びます。 変数++を後置と呼びます。
ディクリメント -- 変数-- 又は --変数
変数の値に1を減算する
--変数を前置と呼びます。 変数--を後置と呼びます。
インクリメントサンプル
    int x = 0;
    System.out.println("++x = " + ++x);
    System.out.println("x =" + x);
    x = 0;
    System.out.println("x++ = " + x++);
    System.out.println("x = " + x);
					
実行結果
    ++x = 1
    x = 1
    x++ = 0
    x = 1
					

ここで、面白い実行結果が出力されたと思います。
++変数(前置き)の場合には、System.out.println( ++x )で1を出力しました。

それに対して、変数++(後置き)の場合には、System.out.println( x++ )で0を出力しました。

重要前置の場合には、System.out.printlnの処理行で先ににインクリメントされた変数値を利用します。
対して、後置の場合には、System.out.printlnの処理行ではインクリメント前の変数値を利用します。
System.out.printlnが実行されたとき後に指定された変数がインクリメントされます。まさに後で評価する=後置ですね。

ディクリメントサンプル
    int y = 1;
    System.out.println("--y = " + --y);
    System.out.println("y = " + y);
    y = 1;
    System.out.println("y-- = " + y--);
    System.out.println("y = " + y);
					
実行結果
    --y = 0
    y = 0
    y-- = 1
    y = 0
					

インクリメント同様に前置は先にディクリメントが評価され、後置は処理式が終了後に評価されています。

インクリメント、ディクリメントの利用について

インクリメントとディクリメントが変数に対して1の加算、減算されることは、ご理解された事と思います。

重要「前置」と「後置」の使い分けを意識させるソースファイルは、運用上必ずトラブルの原因になります。

開発チームでルールベースの方針を決めて「前置」と「後置」のどちらかの方法に寄せることです。

問題の起き難いルールベースのソース
    int z = 1;
    z++;
    System.out.println("z = " + z);

    z = 1;
    System.out.println("z = " + z);
    z++;
					
実行結果
    z = 2
    z = 1
					

これは、インクリメントを「後置」で統一し、「処理」内でのインクリメントを禁止します。
処理前後にインクリメントを行う事で「前置」「後置」と同じ事を表現しています。

重要ソースファイルは、メモリやCPUが乏しい環境を除き、可読性と保守性を重視して下さい。
処理速度が少し早くなるからなどの理由でトラップになるような構成はしてはいけません。
重要な事は、プログラム経験1年生でも理解でき、保守性を高めるルールを維持することです。