複合演算子

7.複合演算子

複数の演算子の組み合わせと等価な働きをする複合演算子というものがあります.
例えば, 下の文について考えてみます.

a  =  b  + 1;

これはいいですね.bに1を足した結果をaに代入しています.

ではこれはどうでしょうか

a  =  a + 1;

数学では全くあり得ない式です.これを満たすaはありません.しかし,数学の=とC言語の=は別のもでした.
C言語では=は代入です.
こう表現するとわかりやすいかもしれません

a_n+1 = a_n + 1;

つまり,これまでのaに1を足したものを新しいaとするという意味になります.
これを短縮して下のような表記ができます.

a = a + n; → a += n;

ほかの演算についても演算結果を自分自身に代入するものの短縮形が用意されています.

表記 短縮前の形
a += n a = a + n
a -= n a = a – n
a *= n a = a * n
a /= n a = a / n
a |= n a = a | n
a &= n a = a & n
a <<= n a = a << n
a >>= n a = a >> n
a++ a = a + 1
a-- a = a – 1
++a a = a + 1
--a a = a + 1

特に1増やす,減らすものはカウント用の変数などに非常に頻繁に使われるため,
特別にa++, a—-というa+=1, a-=1のさらなる短縮形が用意されています
a++と++aがありますが,これは処理してから1増やすか1増やしてから処理するかの違いがあります.

下の例で比較してみましょう.

a = 3
x =  a++ + 5;

これはxにaと5を足した結果を代入してからaを1足します.
処理後はa = 4, x = 8になります.

一方で

a = 3
x = ++a + 5;

aを1足してからxにaと5を足した結果を代入します.
処理後はa = 4, x = 9になります.
最終更新:2017年07月18日 17:55