C中两侧的增量

Afn*_*nan -6 c++ post-increment

C中以下行的含义是什么?执行顺序是什么?

float *x,*y;
*x++=*y++
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这是如何评价的?

Eri*_*hil 10

对于原始代码:

x++ = y++
Run Code Online (Sandbox Code Playgroud)

永远不会评估此行,因为它不是合法的C并且不会被编译.结果x++不是左值,并且不允许在赋值的左侧.

对于更新的代码:

float x,y;
*x++ = *y++
Run Code Online (Sandbox Code Playgroud)

这不合法,因为*无法应用于float.

我将添加此代码:

float *x, *y;
*x++ = *y++;
Run Code Online (Sandbox Code Playgroud)

这段代码说:

  • 让一个临时的,说float *xt,平等的x.
  • 让一个临时的,说float *yt,平等的y.
  • 添加一个x.
  • 添加一个y.
  • 分配*xt = *yt.

实际的操作可以以各种顺序来执行,提供xt取前的值x被更新时,yt取前的值y被更新,并且xtyt在使用之前它们被定义.