指针是先赋值还是递增?
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
指向的位置。
当你有语句时:
*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
指向的位置。