next up previous contents
Next: 2. 変わった代入演算子 Up: 1. インクリメント・デクリメント Previous: 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 平成14年11月26日