++, -- 演算子

変数への 1 ずつの加減算については以下のように使える演算子もあります。(インクリメント(加算)、デクリメント(減算)演算子と呼びます。)

演算子利用例(aを20とする)同じ意味の記述
++a++; (aは21となる)a=a+1; や a+=1;
--a--; (aは19となる)a=a-1; や a-=1;

それ以外にインクリメント、デクリメント演算子は ++a 、--a のように使うこともできます。違いは演算処理のなかで使われたときです。++a は演算に先立って加算され、a++ は演算の後で加算されます。慣れないうちは a++; のように、一行だけの記述で、つまり a=a+1; の代わりに使うのがよいでしょう。

「演算に先立って」「演算の後で」ということの違いがはっきりする例を以下に示しておきます。a++ と ++a で結果が 120 と 126 と違いがでていますね。興味のある人は何が起きているか考えてみると良いでしょう。

プログラム例

main(){
  int a,b;
  a = 20; b = 6 * a++;
  printf(" a++ 実行後 a=%d, b=%d\n", a,b);
  a = 20; b = 6 * ++a;
  printf(" ++a 実行後 a=%d, b=%d\n", a,b);
}

実行結果

 a++ 実行後 a=21, b=120
 ++a 実行後 a=21, b=126

6 * a++ は 6 と掛け合わされたあとで加算され、6 * ++a は 6 と掛け合わされる前に加算されています。


Yutaka Yasuda (yasuda@cc.kyoto-su.ac.jp)