【C++】前置インクリメント「++i」と後置インクリメント「i++」の違いとは?
C++のインクリメント演算子「++」には、前置(prefix)と後置(postfix)の2つの形式があり、それぞれ動作に大きな違いがあります。
- 前置インクリメント(++i):変数 i の値を先に1増やし、その増加後の新しい値が式の値になります。つまり、「まず増加してから値を返す」動作です。
- 後置インクリメント(i++):変数 i の値は1増やされますが、式の値としては増加前の元の値が使われます。つまり、「まず値を返してから増加する」動作です。
サンプルコード
実際のコードを見ながら、その違いを詳しく確認してみましょう。
#include<iostream>
using namespace std;
int main() {
int x = 3, y, z;
y = x++;
z = ++x;
cout << x << ", " << y << ", " << z;
return 0;
}実行結果
このコードを実行すると、次のような出力が得られます。
5, 3, 5
なぜこのような結果になるのでしょうか? 処理の流れを順番に見ていきましょう。
- 変数 x を 3 で初期化します。
- y = x++ の評価:後置インクリメントのため、増加前の x の値(3)が y に代入され、その後 x が 4 に増加します。
- z = ++x の評価:前置インクリメントのため、まず x が 5 に増加し、その増加後の値(5)が z に代入されます。
- 最後に、x、y、z の値(5, 3, 5)を出力します。
このように、前置と後置では「式が返す値」と「変数が増加するタイミング」が異なります。ループ処理などでどちらを使うかによって挙動が変わるため、違いを正しく理解しておくことが重要です。
-
C#の値渡しと参照渡し(refパラメーター)の違いを徹底解説
C#では、メソッドに引数を渡す方法として「値渡し」と「参照渡し」の2種類があります。それぞれの仕組みの違いを理解することは、バグの防止や効率的なコード設計において非常に重要です。本記事では、両者の違いをわかりやすく解説します。 参照パラメーター(参照渡し)とは 参照パラメーターとは、変数が格納されているメモリ上の位置(アドレス)への参照を表すものです。参照パラメーターは、メソッドに渡された実引数と同じメモリ位置を共有します。 そのため、パラメーターを参照渡しにした場合、値渡しとは異なり、新しいストレージ領域は作成されません。メソッド内でパラメーターに行われた変更は、呼び出し元の変数に直接反映さ
-
C#における「宣言」と「定義」の違いとは?初心者向けにわかりやすく解説
C#プログラミングでは、「宣言」と「定義」という2つの概念を正しく理解することが重要です。この記事では、両者の違いを具体的なコード例とともに解説します。 宣言と定義の違い 宣言とは、変数の型と名前をコンパイラに通知することです。この段階では、変数はまだ値を持っていません。 一方、定義とは、宣言された変数に実際の値を割り当てる(初期化する)ことを指します。 この考え方は、変数だけでなく、配列やコレクションなどにも同じように当てはまります。 変数の場合 変数の宣言 int x; このコードでは、整数型(int)の変数 x を宣言しています。この時点では、x にはまだ何の値も代入されていません。 変