C言語には、C言語独自の演算子として、インクリメント演算子、デクリメント演算子があります。
少々癖のある演算子ですが、使いこなすことができるようになりますと、C言語のソースコードが読みやすくなりますし、プログラミング効率も向上しますので、ぜひマスターしていただきたいと思います。
なお、C言語の基本的な演算子である、算術演算子、関係演算子、論理演算子については、前回のC言語超入門(第16回)でお伝えしましたので、ぜひご参照くださいませ。
演算子で+1、-1を処理する
C言語独自のインクリメント演算子、デクリメント演算子は、+1加算、-1減算を行います。
例えば、変数y の値を +1 する場合、
y = y + 1;
と記述しますね。
インクリメント演算子を使いますと、
y++; または ++y;
と記述できます。
デクリメント演算子は、-1減算するだけで、記述方法はインクリメント演算子と同様です。
y++; と ++y; は、どちらも変数y に +1加算しますので、結果は同じなのですが、加算をするタイミングが異なります。
++が変数の前にあるときは、数式を処理する前に+1加算を行い、逆に++が変数の後ろにあるときは、数式を処理した後に+1加算を行います。
以下の「※プログラム1」を使ってご説明しますね。
※プログラム1
#include int main() { int x, y; x = 10; y = ++x; printf("++x : %d\n", y); x=10; y = x++; printf("x++ : %d\n", y); }
※プログラム1の実行結果
++x : 11 x++ : 10
y = ++x; と記述した場合、++が変数xの前にあるため、数式を処理する前に、変数x に+1加算が行われます。
つまり、y = ++x; を分解しますと、
x = x + 1; y = x;
と処理されるため、変数 y の値が 11 になりました。
一方、y = x++; と記述しますと、++が変数xの後ろにありますので、数式を処理した後に、変数xに+1加算が行われます。
y = x++;を分解しますと、
y = x; x = x + 1;
と処理されますので、変数yの値は 10 になるわけです。
インクリメント演算子とデクリメント演算子を使うのは、2行が1行になるだけ、と言ってしまえば、それだけです。
y = x++;
と記述するのが嫌でしたら、
y = x; x = x + 1;
と記述しても、何ら問題ありません。
なお、インクリメント演算子がよく使われるケースのひとつに、for文があります。
例えば、多くのプログラムにおいて、
for (i=0; i <10; i++) { ・・・ }
という使い方がされています。
もちろん以下のように、
for (i=0; i<10; i = i + 1) { ・・・ }
と記述しても間違いではありませんが、どちらが「読みやすい」プログラムなのかは一目瞭然だと思いますし、後者の記述をしているプログラムソースは、ほとんど見かけたことがありません。
C言語超入門の第18回まとめ
C言語独自の演算子である、インクリメント演算子とデクリメント演算子は、少し癖のある演算子ですが、上手に使うことでソースコードが読みやすくなる効果が期待できます。
インクリメント演算子とデクリメント演算子を使わなくても、C言語のプログラミングは可能ですが、ソースコードの読みやすさや、コーディングの効率などを総合的に考慮すると、使用しない理由は見当たりません。
ぜひ今後のプログラミングで活用してみてくださいませ。
ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。