C言語のインクリメント演算子(++)の使い方
- 作成日: 2024-03-24
- 更新日: 2024-03-24
- カテゴリ: C言語
この記事ではC言語のインクリメント演算子(++)の使い方を解説します。
C言語や他の言語を扱う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
になり、その1
がn
に代入されます。
よって結果はi
もn
も1
になります。
ポインタ変数をインクリメント(ポインタ演算)
ポインタ変数をインクリメントするとポインタ演算になります。
#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
(値)になっています。