了解C循环中的多个条件

时间:2011-11-06 10:20:56

标签: c lua

有一段C代码

int i, j = 0;
for (i = 0, j = n-1; i < n; j = i++) {
    // array operations
}

我正在尝试转换为Lua代码

local j = n-1
for i = 1, n do -- arrays are 1-based in Lua
    -- array operations
    j = i+1
end

但由于某些原因,Lua代码不起作用。我是否正确地使用C循环?

4 个答案:

答案 0 :(得分:2)

我不知道Lua,但C代码的作用是:

每次迭代:

将i分配给j:j = i; 然后将i递增1:i = i + 1;

看起来你的Lua代码应该是j = i而不是j = i + 1

答案 1 :(得分:2)

想象一个数组作为循环缓冲区。 i是当前项目,j始终是前一项:

n = 5
local j = n
for i = 1, n do -- arrays are 1-based in Lua
    -- array operations
    io.write('i=', i, ' j=', j, '\n')
    j = i
end

Demo

i=1 j=5
i=2 j=1
i=3 j=2
i=4 j=3
i=5 j=4

答案 2 :(得分:1)

不,j总是小于i,除非i等于0,然后jn-1。因此,j = i+1应该是j = i,因为i会在下一次迭代中增加。{/ p>

我不认识Lua,所以我无法确定。

答案 3 :(得分:0)

可能不是最好将其转换为lua for循环;使用while循环:

local i , j = 0 , n-1
while i < n do
    --array operations
    j = i
    i = i + 1
end

不是说代码有很多意义....如果你想转换为基于1的索引也使用i , j = 1 , ni<=n