C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++におけるi++と++iの違い:前置インクリメントと後置インクリメントの使い分け


インクリメント演算子は、変数の値を1つ増やすために使用される演算子です。一方、デクリメント演算子はその逆の働きをし、値を1つ減らします。

前置インクリメントと後置インクリメントの基本

前置インクリメント(++i) ― 変数の値が使用される前に、値が1増加します。

後置インクリメント(i++) ― 変数の値が使用された後に、値が1増加します。

C++における i++ および ++i の構文は次のとおりです。

++variable_name; // 前置インクリメント(Pre-increment)
variable_name++; // 後置インクリメント(Post-increment)

ここで、variable_name ― ユーザーが定義した変数の名前を表します。

C++における前置・後置インクリメントの例

#include <iostream>
using namespace std;
int main() {
    int i = 5;
    cout << "The pre-incremented value: " << i;
    while (++i < 10)
        cout << "\t" << i;
    cout << "\nThe post-incremented value: " << i;
    while (i++ < 15)
        cout << "\t" << i;
    return 0;
}

実行結果

The pre-incremented value: 56789
The post-incremented value: 101112131415

プログラムの解説

上記のプログラムでは、main() 関数内に前置インクリメントと後置インクリメントのコードが含まれています。整数型の変数 i は、まず値が10未満である間は前置インクリメント(++i)で処理され、その後、値が15未満である間は後置インクリメント(i++)で処理されます。

while (++i < 10)
    cout << "\t" << i;
cout << "\nThe post-incremented value: " << i;
while (i++ < 15)
    cout << "\t" << i;

前置と後置の使い分けのポイント

  • 組み込み型(intなど)の場合: 単独で使用する限り、++i と i++ の結果に大きな違いはありません。
  • クラス型やSTLのイテレータの場合: 後置インクリメントは元の値のコピーを一時的に作成するため、前置インクリメント(++i)の方が一般的に効率的です。イテレータ操作では ++it の使用が推奨されます。
  • 式の中で使用する場合: 前置は「増やしてから使う」、後置は「使ってから増やす」という評価順序の違いがあるため、意図に応じて正しく選択することが重要です。
  1. C++でvolatile(揮発性)修飾子を使う理由とは?2つの重要な意味をわかりやすく解説

    C++におけるvolatile修飾子には、主に次の2つの重要な意味があります。これらを正しく理解することで、組み込み開発などでvolatileを適切に使いこなせるようになります。 volatileが持つ2つの意味 1. 変数の値はコード外の要因で変化する可能性がある volatile付きの変数は、プログラマが書いたコードによって変更していなくても、ハードウェアやOSなどの外部要因によって値が変わる可能性があります。そのため、コンパイラはこの変数の値を読み取るたびに、「前回読み取った値と同じだろう」「最後に格納した値のままだろう」といった仮定をすることができません。必ずその都度、実際にメモリ

  2. C#のwhileループでcontinueステートメントを使う方法を解説

    C#におけるcontinueステートメントは、ループ本体の残りの処理をスキップし、直ちに条件判定へ制御を移すための命令です。その後、条件が真であれば次の反復(イテレーション)が実行されます。continueはbreakステートメントに似た働きをしますが、決定的な違いがあります。breakがループ自体を強制終了させるのに対し、continueはループを終了せず、間にあるコードを飛ばして次の反復へ進むよう制御します。whileループの場合、continueステートメントが実行されると、プログラムの制御はループ先頭の条件判定部分へ移ります。このため、continueより後ろに記述された処理はその回の