C 言語にはインクリメント演算子とデクリメント演算子という便利な演算子があります: #include <stdio.h> int main () { int a = 5; --a; printf ("%d\n", a); return 0; } 上の例なら、変数 a は最終的に 4 になります。 では以下はどうなるでしょうか: /* Practical C Programming (O'Reilly) 参照 */ #include <stdio.h> int main () { int a = 5; a = --a - a--; printf ("%d\n", a); return 0; } 答えは -1 です。以下のように分解すると分かりやすいです: --a; a = a - a; a--; 実際、コンパイラ (gcc) は以下のようなアセンブリコードを出力します: movl $5, 2
![インクリメント・デクリメント演算子](https://cdn-ak-scissors.b.st-hatena.com/image/square/8d71ff5111e05619a10d29bb40d7aebaa75c8fbc/height=288;version=1;width=512/https%3A%2F%2Fs0.wp.com%2Fi%2Fblank.jpg)