数组索引中的后增量和赋值

时间:2018-03-27 17:43:37

标签: c

我遇到了一段简洁的代码,我发现很难解读。

for (int k = 0; k < count; k++)
{
    C[p=w[T[k]]++] = Y1[k];
    CC[p] = Y2[k]
}

w和T看起来像这样:

w = [0 3 6 8]
T = [2 0 3 2 1 0 1 3 0 1]

我无法确定当k = 0时数组CCC将获得的索引是什么,以及一种轻松读取代码的方法。

这就是我试过的。

何时

k = 0,
T[0] = 2,
w[2] = 6
p = 6
w[2] = 7
c[6] and cc[6] are assigned

1 个答案:

答案 0 :(得分:3)

重写它。此代码等同于:

for (int k = 0; k < count; k++)
{
    p = w[T[k]]++;
    C[p] = Y1[k];
    CC[p] = Y2[k]
}

相同
for (int k = 0; k < count; k++)
{
    p = w[T[k]];   // For k=0 => w[2]=6 => p=6
    w[T[k]]++;     // For k=0 => increment w[2], so w[2] is 7
    C[p] = Y1[k];  // C[6] = Y1[0]
    CC[p] = Y2[k]  // CC[6] = Y2[0]
}