ユーニックス総合研究所

  • home
  • archives
  • c-increment

C言語のインクリメント演算子(++)の使い方

  • 作成日: 2024-03-24
  • 更新日: 2024-03-24
  • カテゴリ: C言語

この記事ではC言語のインクリメント演算子(++)の使い方を解説します。

C言語や他の言語を扱うYoutubeも公開しています。
興味がある方は以下のリンクからご覧ください。

Youtubeの当チャンネル

関連記事
C言語の演算子の一覧と解説

インクリメントとは?

インクリメント(increment)とは変数の値を1増加させる演算子のことです。
for文などでもおなじみの演算子で、広く使われています。
for文で使っているところは例えば以下のようなコードです。

for (int i = 0; i < 4; i++) {  
    printf("%d\n", i);  
}  

上記の内、i++というのがインクリメントになります。

関連記事
C言語のfor文の書き方【繰り返し文】

インクリメントの種類

インクリメントには2種類あります。それは以下の種類です。

  • 後置インクリメント
  • 前置インクリメント

これらのインクリメントは作用が違ってきますので、それぞれの特徴を押さえておくのが大事です。

後置インクリメント

後置インクリメントの特徴ですが以下になります。

  • ++を変数の後ろに書く
  • 変数の値を参照してから変数の値を1増加させる

たとえば以下のコードを見てください。

#include <stdio.h>  

int main(void) {  
    int i = 0;  
    int n = i++;  
    printf("%d\n", i);  // 1  
    printf("%d\n", n);  // 0  
    return 0;  
}  

上記のコードではint n = i++;というところ変数iをインクリメントしています。
後置インクリメントではまず最初に変数の値が参照され、上記の変数nにインクリメント「前」の値が代入されます。
iのインクリメント前の値は0ですので、nには0が入ります。
インクリメント後はiの値は0から1になります。

前置インクリメント

前置インクリメントの特徴は以下の通りです。

  • ++を変数の前に書く
  • 変数の値を1増加させてから、変数の値を参照する

以下のコードをご覧ください。

#include <stdio.h>  

int main(void) {  
    int i = 0;  
    int n = ++i;  
    printf("%d\n", i);  // 1  
    printf("%d\n", n);  // 1  
    return 0;  
}  

上記ではint n = ++i;というところがインクリメントしているところです。
iの値は0ですが、++iした段階で1になり、その1nに代入されます。
よって結果はin1になります。

ポインタ変数をインクリメント(ポインタ演算)

ポインタ変数をインクリメントするとポインタ演算になります。

#include <stdio.h>  

int main(void) {  
    int ary[] = {1, 2, 3};  
    int *p = ary;  

    printf("%p %d\n", p, *p);  // 0x7fff5e270e0c 1  

    p++;  // ポインタ演算  

    printf("%p %d\n", p, *p);  // 0x7fff5e270e10 2  

    return 0;  
}  

上記は配列aryをポインタ変数pに代入して、ポインタ変数pを使って配列の値を参照しているところです。
pをインクリメントすると、ポインタのアドレスがintのサイズだけ増加します。
%pで出力しているのがpのアドレスです。

アドレスがインクリメントされると配列においてはその次の要素のアドレスになります。
上記では要素1(値)からインクリメントされて要素2(値)になっています。