我在展开嵌套for
循环时遇到问题。我理解这个概念,我正在尝试将其付诸实践,但是我在编辑for
循环中的语句以匹配展开时遇到了麻烦。
如果有人可以向我展示一个有效的展开并引导我完成它,那将是一个巨大的帮助。
这是我要展开的循环部分:
for (i=1 ; i < WIDTH-1 ; ++i)
{
for (j = 1 ; j < HEIGHT-1 ; ++j)
{
n = getNeighbors(prv, i, j); /* This is where I'm confused */
mask = (prev[i][j] << 1);
next[i][j] = !(((n >> prev[i][j]) ^ 3) ^ mask);
}
}
更新:这是正确的吗?
for (i=1 ; i < WIDTH-1 ; i+=4)
{
for (j = 1 ; j < HEIGHT-1 ; j+=4)
{
n = getNeighbors(prv, i, j);
mask = (prev[i][j] << 1);
next[i][j] = !(((n >> prev[i][j]) ^ 3) ^ mask);
n = getNeighbors(prv, i, j+1);
mask = (prev[i][j+1] << 1);
next[i][j+1] = !(((n >> prev[i][j+1]) ^ 3) ^ mask);
n = getNeighbors(prv, i, j+2);
mask = (prev[i][j+2] << 1);
next[i][j+2] = !(((n >> prev[i][j+2]) ^ 3) ^ mask);
n = getNeighbors(prv, i, j+3);
mask = (prev[i][j+3] << 1);
next[i][j+3] = !(((n >> prev[i][j+3]) ^ 3) ^ mask);
}
for (j = 1 ; j < HEIGHT-1 ; j+=4)
{
n = getNeighbors(prv, i+1, j);
mask = (prev[i+1][j] << 1);
next[i+1][j] = !(((n >> prev[i+1][j]) ^ 3) ^ mask);
n = getNeighbors(prv, i+1, j+1);
mask = (prev[i+!][j+1] << 1);
next[i+1][j+1] = !(((n >> prev[i+1][j+1]) ^ 3) ^ mask);
n = getNeighbors(prv, i+1, j+2);
mask = (prev[i+1][j+2] << 1);
next[i+1][j+2] = !(((n >> prev[i+1][j+2]) ^ 3) ^ mask);
n = getNeighbors(prv, i+1, j+3);
mask = (prev[i+1][j+3] << 1);
next[i+1][j+3] = !(((n >> prev[i+1][j+3]) ^ 3) ^ mask);
}
for (j = 1 ; j < HEIGHT-1 ; j+=4)
{
n = getNeighbors(prv, i+2, j);
mask = (prev[i+2][j] << 1);
next[i+2][j] = !(((n >> prev[i+2][j]) ^ 3) ^ mask);
n = getNeighbors(prv, i+2, j+1);
mask = (prev[i+2][j+1] << 1);
next[i+2][j+1] = !(((n >> prev[i+2][j+1]) ^ 3) ^ mask);
n = getNeighbors(prv, i+2, j+2);
mask = (prev[i+2][j+2] << 1);
next[i+2][j+2] = !(((n >> prev[i+2][j+2]) ^ 3) ^ mask);
n = getNeighbors(prv, i+2, j+3);
mask = (prev[i+2][j+3] << 1);
next[i+2][j+3] = !(((n >> prev[i+2][j+3]) ^ 3) ^ mask);
}
for (j = 1 ; j < HEIGHT-1 ; j+=4)
{
n = getNeighbors(prv, i+3, j);
mask = (prev[i+3][j] << 1);
next[i+3][j] = !(((n >> prev[i+3][j]) ^ 3) ^ mask);
n = getNeighbors(prv, i+3, j+1);
mask = (prev[i][j+1] << 1);
next[i+3][j+1] = !(((n >> prev[i+3][j+1]) ^ 3) ^ mask);
n = getNeighbors(prv, i+3, j+2);
mask = (prev[i][j+2] << 1);
next[i+3][j+2] = !(((n >> prev[i+3][j+2]) ^ 3) ^ mask);
n = getNeighbors(prv, i+3, j+3);
mask = (prev[i+3][j+3] << 1);
next[i+3][j+3] = !(((n >> prev[i+3][j+3]) ^ 3) ^ mask);
}
}