在while循环中后增量

Dav*_*ita 6 c pointers post-increment

以下代码让我有点困惑:

char * strcpy(char * p, const char * q) {
  while (*p++=*q++);
  //return
}
Run Code Online (Sandbox Code Playgroud)

这是功能的简化实现strcpy.从这段代码中,我们看到指针pq递增然后解除引用并q分配给指针p直到\0达到char.

我想有人解释while循环的第一次迭代.

Kev*_*vin 9

因为++它位于变量之后,所以计算表达式之前它们不会递增.这就是为什么它是后增量运算符; 预增量是前缀(++p). *++p写到第二个位置,*p++写入第一个.