C言語の「i++」と「++i」の違い

C言語である変数iに1を足すと言う処理はいくつかの方法で書くことができます。

i = i + 1 ;
i += 1 ;
i++ ;
++i ;

それぞれ最終的な結果は「iに1を足したもの」になるのですが、動きが若干違います。

スポンサーリンク

C言語の「i++」と「++i」の違い

C言語である変数iに1を足すと言う処理を書く場合は次の3つの書き方があります。

i = i + 1 ;
i += 1 ;
i++ ;
++i ;

「i = i + 1 ;」や「i += 1 ;」は一番目にするポピュラーな書き方です。

ちょとした注意が必要なのは「i++」と「++i」です。

この2つには動作に違いがあり、参照するタイミングによってiに1を足したものが参照出来たり、足す前の値を参照したりします。

前置インクリメント演算子(++i)と後置インクリメント演算子(i++)

まず、インクリメント演算子を前に置いた場合の処理です。

int main() {

    int    i;

    i = 10 ;
    printf( "i=[%d]\n", ++i ) ;
    printf( "i  =[%d]\n", i ) ;
    return 0: ;
}

この場合の処理結果は

i=[11]
i=[11]

とどちらも「11」になっています。

「++i(前置インクリメント演算子)」の場合は「iに1を足した結果」を表示していますね。

これは「処理をする前に演算(今回は+1を足す)を行う」ということです。

次の「後置インクリメント演算子(i++)」はどうかというと

int main() {
    int    i;

    i = 10 ;
    printf( "i++=[%d]\n", i++ ) ;
    printf( "i  =[%d]\n", i ) ;

この処理の実行結果は

i++=[10]
i  =[11]

で、1つ目のiは10と演算を行う前の値が表示されています。

まとめ

C言語にはいくつの方法で演算を行えますが、書き方によっては演算前の値にアクセスしたりする場合があるので、ちょっとした注意が必要です。

タイトルとURLをコピーしました