#はじめに
C言語のインクリメントについてよく忘れるのでメモを残しておきます。
+を-と置き換えればデクリメントにも当てはまります。
#種類
x = x+1; /* 通常 */
++x; /* プリインクリメント */
x++; /* ポストインクリメント */
x += 1; /* 代入演算子 */
4種類ともxを1増加させています。
前後でxを利用していなければどれも同じです。
++x
はプリインクリメントと呼ばれ、式で使用される前にxが1増加します。
x++
はポストインクリメントと呼ばれ、式で使用された後にxが1増加します。
+=
と書く代入演算子はx = x+1
と同じ意味です。
#例
上記の複合パターンは奥深いため、まとめてみました。
##通常+代入演算子
array[i=i+1] += j;
=>
i++;
array[i] = array[i] + j;
配列要素は優先度が高いため先に計算されます。
またarray[i=i+1] = array[i=i+1] + j;
とはなりません。
##代入演算子+代入演算子
array[i+=1] += j;
=>
i++;
array[i] = array[i] + j;
##ポストインクリメント+代入演算子
array[++i] += j;
=>
i++;
array[i] = array[i] + j;
##プリインクリメント+代入演算子
array[i++] += j;
=>
array[i] = array[i] + j;
i++;
##プリインクリメント+ポストインクリメント+代入演算子
array[++i + j--] += --k;
=>
i++;
k--;
array[i + j] = array[i + j] + k;
j--;
ここまでくると読みにくいので書かないと思いますが、このようになります。