単項演算子

今回は前回少しばかり触れた単項演算子についてやりましょう。
単項演算子の主なものには、後置増分演算子、前置増分演算子、
後置減分演算子、前置減分演算子などがあります。

まずは、後置増分演算子から見てみましょう。

int x=1;
x++;

後置増分演算子(++)は、左にある変数の値を1上げます(この事をインクリメントと呼ぶ)。
よって、変数xには2が代入されます。

また、上の後置増分演算子の逆の働きをする演算子も用意されています。
それが、後置減分演算子です。

int x=2;
x--;

予想が出来た人も多いと思いますが、
後置減分演算子(--)は、左にある変数の値を1下げます(この事をデクリメントと呼ぶ)。
よって、変数xには1が代入されます。


数値を1上げる事を「インクリメント」、数値を1下げる事を「デクリメント」という
両方とも暗記必須

続いて、前置増分演算子と、前置減分演算子についてやります。
これらの記号は ++ と -- で、上の二つとまったく同じ記号です。
どこが違うかといえば、どこに置くかが異なります。
名前の通り、変数の後に書けば「後置」、変数の前に書けば「前置」となります。

「後置」と「前置」 の違いは、次のプログラムで分かります。

#include <stdio.h>

int main(void)
{
  int x=0,y=0,z;
  z=x++;    /*後置増分演算子*/
  printf("x=%d z=%d\n",x,z); /*xとzの値を表示*/

  z=0;      /*zの値をいったんリセット*/
  z=++y;    /*前置増分演算子*/
  printf("y=%d z=%d\n",y,z);/*yとzの値を表示*/

  return 0;
}

----------------------------------
実行結果
----------------------------------
x=1 z=0
y=1 z=1
何故上のような結果になったのでしょうか。
それは次を見てください。
/*******前者*******/
1)zにxを代入
2)xをインクリメント

/*******後者*******/
1)yをインクリメント
2)zにyを代入
前者はxの値が代入されてからインクリメントされ、
後者はyの値がインクリメントされてから代入されます。
要するに前置増分演算子は単純代入演算子(=)より優先順位が低いってことですね。
「減分演算子」についてもまったく同じことが言えます。

今回はこの辺でお開き〜