如何评估下面函数中的表达式?

时间:2015-03-01 10:06:18

标签: c function

//function to copy string t to string s using pointers
void strcpy(char *s,char *t)
{
    while((*s++=*t++)!='\0');
    return;
}

我很困惑如何评估表达式* s ++ == * t ++。我知道增量运算符的关联性高于赋值运算符。

2 个答案:

答案 0 :(得分:2)

* s ++ = * t ++基本上是

*s = *t;
s++;
t++;

答案 1 :(得分:1)

*s++=*t++意味着;必须对*s*t进行求值以生成变量(左值),并在此过程中使用st的原始值(即{{1}的值在递增之前和} s。必须在t增加之前分配*t

请注意,分配后不必增加增量。相反,必须使用原始值。只要使用原始值,增量就可以随时发生。

还应该注意,后增量s在变量之后并不意味着增量将在赋值后发生。

建议阅读:Incrementing Pointers, Exact Sequence