アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++で動いていたプログラムをCに移行したらerror C2105が出力されました。プログラムは以下の通りです。
  :
 int *p;
 int i;
  :
i = *(++p)++; //pを1つ進めて、内容を取り出し、さらにpを進めたい
  :
 C++では++Pの評価結果がポインタ変数となり、Cでは単なるアドレスになってしまっているようですが、
 これは言語仕様の違いですか?
 それとも、私のC++ではたまたま動いただけで、本来このような使用方法はしてはいけないのでしょうか?

 私はVisualC++6.0を使用しています。また、上記でC++とCといっているのは、ファイルの拡張子をcppをcにしただけのことを言っています。どなたかご教授お願いします。

A 回答 (1件)

式の評価結果が、間違いなく右辺値になるかどうかという違いはありますが...



>  それとも、私のC++ではたまたま動いただけで、本来このような使用方法はしてはいけないのでしょうか?

その通りです。
副作用完了点から次の副作用完了点までの間に、同じオブジェクトを複数回更新してはいけません。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
今後はこのようなプログラムは書かないようにします。

お礼日時:2009/10/15 19:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!