指针是先赋值还是递增?

Does the pointer get assigned first or the incremented?

当你有语句时:

*str++ = *end

*str 是被赋予 *end 的值,还是先递增然后被赋予 *end 的值?

作为一个post自增运算符,它首先赋值*end然后指向str的new/incremented地址。

逻辑上,表达式的计算结果如下:

t0 = str;
t1 = *end;
str = str + 1;
*t0 = t1;

除了这些操作发生的确切顺序是未指定。以下序列也是可能的:

t0 = str;
str = str + 1;
t1 = *end;
*t0 = t1;

t0 = *end;
t1 = str;
*t1 = t0;
str = str + 1;

t0 = *end;
t1 = str;
str = str + 1;
*t1 = t0;

一个常数是我们在增量之前更新str指向的位置。