有一段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循环?
答案 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
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
,然后j
为n-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 , n
和i<=n