Previous: 単体での使用
Up: インクリメント・デクリメント
Previous Page: 単体での使用
Next Page: 式の縮約表現

式中での使用

更に、インクリメント・デクリメント演算子は式の中にも使うことができるが、 問題はどの時点で実際にインクリメント(あるいはデクリメント)を実行するかという 問題が発生する。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);
        例8        x++ = y++;

maruyama@wakhok.ac.jp
1995年02月08日 (水) 18時57分57秒 JST