目次
概要
前置・後置インクリメント演算子は、変数の値を 1 増加させる際に評価順序が異なる点が特徴です。後置演算子は代入後に値を更新し、前置演算子は値を更新してから代入を行います。本稿では両演算子を同一プログラムで比較し、評価結果の違いを確認いたします。
サンプルコード
// 前置・後置インクリメント演算子の動作を比較するサンプル
#include <iostream>
int main(int /*argc*/, char* /*argv*/[])
{
int index = 9; // 初期値
int result = 0; // 結果格納用
result = index++; // 後置インクリメント
std::cout << "後置演算後の result は " << result << " です。" << '\n';
std::cout << "後置演算後の index は " << index << " です。" << '\n';
result = ++index; // 前置インクリメント
std::cout << "前置演算後の result は " << result << " です。" << '\n';
std::cout << "前置演算後の index は " << index << " です。" << '\n';
return 0;
}
コード解説
行 | 説明 |
---|---|
2 | #include <iostream> で標準入出力ストリームを有効化します。 |
4 | main 関数はプログラムの開始点で、未使用引数はコメント化して警告を抑止しています。 |
6 | int index = 9; により初期値 9 を設定します。 |
7 | int result = 0; は演算結果を格納する変数です。 |
9 | result = index++; 後置演算子により、result へは旧値 9 が代入され、その後 index が 10 になります。 |
12 | result = ++index; 前置演算子により、index が 11 に更新された後、その値が result へ代入されます。 |
16 | return 0; は正常終了を示します。 |
応用
インクリメント・デクリメントはループ制御やカウンタ処理で頻繁に使用されます。意図しない評価順序によるバグを防ぐため、代入と同時に値を参照する場合には前置・後置の違いを明確に意識する必要があります。また、表現を簡潔にする際は複合演算子や範囲 for 文の利用もご検討ください。
まとめ
後置インクリメントは「代入後に更新」、前置インクリメントは「更新後に代入」という動作を行います。演算子の選択を誤ると意図しない結果を招くため、評価タイミングを理解し適切に使い分けることが重要です。