プログラミングではインクリメントやデクリメントはよく使うかとは思いますが、それぞれ書き方がふたつありますね。
a++;
++a;
これはどちらもインクリメントですが、何が違うのでしょうか?
意味は全く同じじゃないの?
それが微妙に違っていて、注意しなければならない点でもあるんだ。
目次
インクリメントの書き方、その違いは評価の順にあり!
Java言語を例に用いて例を挙げます。
書き方の違うインクリメントを表示し、更にそのあともう一度表示します。
結果はどうなるでしょう。
表示と処理を一緒に書いた箇所だけaとbの値が違いますね。これは書き方によってインクリメントの評価の順番が違うことが原因です。
「a++」は、評価をしたあとインクリメントします。この場合だと表示→インクリメントとなるわけですね。なので表示は10のままですが、処理が終わった後は11になっています。
「++b」は、インクリメントしたあと評価します。この場合だとインクリメント→表示となります。なので表示される値は11になります。
これはデクリメントでも同じで、「a–」と書けは先に評価を、「–b」と書けば後に評価をします。
うーんよくわからん。何を気を付ければいいのかな。
気を付けるべきは、インクリメントと他の演算を挟んだりすることを極力避けることです。
int a = 10;
System.out.println( a++ + 20 );
これは表示は30になります。31ではありません。
このように、他の処理を挟み込むとすごくややこしくなり、不具合の要因にもなります。
インクリメントが他の処理と同時に行うのをみかけないのは、このようなことが起きないようにケアしているからなんだね。
インクリメント・デクリメントは単独で!だね!
コメント