インクリメント演算子は、どうも言語によってかなり扱いが違うことに気がついた。
まず、実行しようと思うコードの擬似表現は以下。このコードを実行すると、どのような結果が出力されるだろうか? まずは頭の中で考えてほしい。
なお、「a++」の部分は「後置インクリメント」と呼ばれ、式自体の評価値はインクリメント前の値になる。つまり、「a++」の評価値はいずれの言語でも1になる。
a = 1; print (a + a++);
計算し終わっただろうか。では上記コードを各種言語で実行した場合の結果を見てみよう。
言語間で結果が違うことがわかるだろう。まずは、なぜこれらの言語間で結果が違うのか、納得のいく説明を考えてほしい。
考え終わったら次の実験をしてみよう。
次は、後置インクリメントではなく前置インクリメントを使ってみる。つまり、下記のようなコードである。
なお「++a」は、計算後の値が評価値になるため、いずれの言語でも2と評価される。
a = 1; print (a + ++a);
こちらも、各種言語で実行した結果を見てみよう。
さて、後置インクリメントの結果を見て考えた「納得のいく説明」は、こちらでも通用しただろうか。
※見出しの前置と後置が逆だったので修正しました
それ未定義なんじゃねーの?
http://anond.hatelabo.jp/20090225004330
これかな?とりあえずCについてだけだけど 後置増分演算子++も後置減分演算子--も元の値を返した後で、その演 算を行う。この