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

C++の前置演算子(++i)と後置演算子(i++)の違いを徹底解説

C++のインクリメント演算子には、前置(プレフィックス)形式と後置(ポストフィックス)形式の2種類があります。どちらも変数の値を1つ増やしますが、式として返す値が異なるため、この違いを正しく理解することが重要です。

前置演算子(++i)の動作

前置形式(++i)では、まず変数iの値がインクリメントされ、式の値としては「インクリメント後の新しい値」が返されます。つまり、「先に値を増やし、その結果を式に渡す」という順序で処理が行われます。

後置演算子(i++)の動作

一方、後置形式(i++)では、変数i自体はインクリメントされますが、式の値としては「インクリメント前の元の値」が返されます。つまり、「先に現在の値を式に渡し、その後で変数を増やす」という順序になります。

それでは、実際のコードを見ながら理解を深めましょう。

コード例

#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

なぜこのような結果になるのでしょうか? 処理の流れを1ステップずつ詳しく確認していきます。

  • まず、x を 3 で初期化します。
  • y = x++; の実行時、式 x++ の評価結果として「インクリメント前のxの値(3)」がyに代入され、その直後にxが4へとインクリメントされます。
  • z = ++x; の実行時、先にxが5へインクリメントされ、式 ++x の評価結果として「インクリメント後のxの値(5)」がzに代入されます。
  • 最後に、x・y・z の各値が出力されます。

このように、前置と後置の違いは「式が返すのがインクリメント前の値か、後の値か」という点にあります。ループ処理などで頻繁に使われる演算子なので、挙動の違いをしっかり把握しておきましょう。

  1. Pythonの「!=」演算子と「<>」演算子の違いをわかりやすく解説

    Pythonには、2つの値が等しくないかどうかを判定するための比較演算子として、かつて「!=」と「<>」の2種類が存在していました。一見似ているこの2つの演算子ですが、Pythonのバージョンによって扱いが大きく異なります。本記事では、それぞれの違いと注意点を解説します。 Python 2.xでは両方の演算子が使用可能 Python 2.xでは、「!=」と「<>」のどちらの演算子も使用できます。どちらも動作はまったく同じで、2つのオペランド(被演算子)が等しくない場合にTrueを返し、等しい場合にはFalseを返します。 >>> 1 != 2 True >>&g

  2. Pythonの「=」と「==」の違いとは?代入と比較の使い分けを徹底解説

    Pythonにおける「=」と「==」の基本的な違いPythonでは「=」と「==」はまったく異なる役割を持つ記号です。初心者が混同しやすいポイントですが、それぞれの意味を正しく理解しておくことが重要です。「=」は代入演算子Pythonにおいて「=」記号は代入演算子として定義されています。左辺には1つの変数を、右辺には式を置く必要があり、右辺の式が評価された結果の値が、左辺の変数に格納されます。つまり、式と変数名は入れ替えて使うことはできません。>>> a=10 >>> b=20 >>> c=a+b >>> a,b,c (1