C/C++の前置インクリメント(++i)と後置インクリメント(i++)の違いをわかりやすく解説
プログラミングにおいて、インクリメント演算子は変数の値を1つ増やすために使われ、逆にデクリメント演算子は値を1つ減らすために使用されます。C言語およびC++では、これらの演算子にはそれぞれ「前置」と「後置」の2つの書き方があり、値が評価されるタイミングが異なる点が重要なポイントです。
前置インクリメント(++i)とは
前置インクリメント(++i)では、変数の値を式の中で使用する前に、値が1つ増やされます。つまり、増加後の値が変数に反映された状態で処理が行われます。
後置インクリメント(i++)とは
後置インクリメント(i++)では、変数の現在の値を式の中で使用した後に、値が1つ増やされます。つまり、まず元の値が使われ、その直後にインクリメントが実行されます。
前置・後置インクリメントの構文
以下は、前置インクリメントと後置インクリメントの基本的な構文です。
++variable_name; // 前置インクリメント variable_name++; // 後置インクリメント
ここで、
- variable_name:ユーザーが自由に決められる任意の変数名を表します。
C++におけるサンプルコード
次の例は、前置インクリメントと後置インクリメントの動作の違いを確認できる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: 5 6 7 8 9 The post-incremented value: 10 11 12 13 14 15
出力の解説
最初のwhileループでは前置インクリメント(++i)を使っているため、条件判定の前にiが1つ増やされます。i=5から始まり、6、7、8、9と順に出力され、iが10になった時点で条件が偽となりループを抜けます。
一方、次のwhileループでは後置インクリメント(i++)を使っているため、まず現在の値で条件判定を行い、その後にiが増加します。このため、判定に使った値より1つ大きい値が出力され、最終的に11から15までが表示されます。
まとめ
前置インクリメント(++i)は「増やしてから使う」、後置インクリメント(i++)は「使ってから増やす」という違いがあります。単独の文として使う場合はどちらでも結果は同じですが、式や条件の中で使用する場合には評価タイミングの違いが実行結果に影響するため、用途に応じて正しく使い分けることが大切です。
-
C/C++のカンマ演算子とは?仕組みと使い方を実例付きで解説
カンマ演算子の基本カンマ(コンマ)演算子は、複数の式をひとつにつなげるための演算子です。カンマで区切られた式のリスト全体の値は、最も右側にある式の値になります。本質的に、カンマ演算子の役割は、一連の処理を左から右へ順番に実行させることにあります。その際、右端以外の式の値はすべて破棄されます。つまり、最も右側の式の評価結果が、カンマで区切られた式全体の値となるのです。例えば、次のように書くことができます。var = (count = 19, incr = 10, count+1);この式では、まず count に 19 を代入し、次に incr に 10 を代入します。その後 count に 1
-
C++のインクリメント(++)とデクリメント(--)演算子の基礎と使い方
インクリメント演算子とデクリメント演算子とはC++には、値を1だけ増減させるための便利な演算子が用意されています。インクリメント演算子「++」はオペランド(対象の値)に1を加え、デクリメント演算子「--」はオペランドから1を引きます。つまり、以下の2つのコードは同じ意味になります。x = x + 1; は x++; と同じ同様に、次の2つも同じ意味です。x = x - 1; は x--; と同じ前置き(prefix)と後置き(postfix)の違いインクリメント・デクリメント演算子には、オペランドの前に置く「前置き(prefix)」と、後ろに置く「後置き(postfix)」の2つの書き方があり