next up previous contents
Next: 8.2 変わった代入演算子 Up: 8.1 インクリメント・デクリメント Previous: 8.1.0.1 単体での使用

8.1.1 式中での使用

更に、インクリメント・デクリメント演算子は式の中にも使うことができるが、 問題はどの時点で実際にインクリメント(あるいはデクリメント)を実行するかという 問題が発生する。c 言語では、これを前置演算と後置演算という区別を設けることに よって解決している。

        例2
                a = 1;
                a++;
                b = a;

というプログラムは、前置演算を用いて、次の様に簡潔に書ける。

        例3
                a = 1;
                b = ++a;

つまり、インクリメント演算子を前に置く(前置)ことによって、先に a の値が 1つ増やされてから、b への代入がなされる。

逆に、次の様なプログラムは、

        例4
                a = 1;
                b = a;
                a++;
        例5
                a = 1;
                b = a++;

のように後置することによって簡潔に書ける。

 

例3と例5を見比べると非常に似通っているが、例3では、a がインクリメント されてから b に代入されるので、b の値は2になるのに対し、例4では、 代入されてからインクリメントが行われるので b の値は1になる。 即ち、例3は例2を簡潔にしたものであること、例4は例3を簡潔にしたもので あることをしっかりと認識しておくことが重要である。

        その他の例
        例6        x = --i + --j;
        例7        x = (++i)*(++j);



Noriyo Kanayama