-6

Cの次の行の意味は何ですか.それを実行する順序は何ですか?

float *x,*y;
*x++=*y++

これがどのように評価されたかを説明できる人はいますか?

4

2 に答える 2

10

元のコードの場合:

x++ = y++

この行は正当な C ではなく、コンパイルされないため、評価されることはありません。の結果はx++左辺値ではなく、代入の左辺では許可されません。

更新されたコードの場合:

float x,y;
*x++ = *y++

*に適用できないため、これは正当ではありませんfloat

このコードを追加します:

float *x, *y;
*x++ = *y++;

このコードは次のように述べています。

  • 一時的な、たとえばfloat *xt、等しいとしましょうx
  • 一時的な、たとえばfloat *yt、等しいとしましょうy
  • に 1 つ追加しxます。
  • に 1 つ追加しyます。
  • 割り当て*xt = *ytます。

実際の操作はさまざまな順序で実行される可能性があり、provideは更新xt前に値を取得し、更新前に値を取得し、使用前に定義されます。xytyxtyt

于 2013-05-10T19:33:18.473 に答える