理解C语言循环中的多个条件

有一段 C 代码:

int i, j = 0;
for (i = 0, j = n-1; i < n; j = i++) {
    // 数组操作
}

我尝试将其转换为 Lua 代码:

local j = n-1
for i = 1, n do -- 在 Lua 中,数组从 1 开始
    -- 数组操作
    j = i+1
end

但是出现了问题,Lua 代码不起作用。我是否正确理解了 C 循环呢?

原文链接 https://stackoverflow.com/questions/8026414

点赞
stackoverflow用户492716
stackoverflow用户492716

不,除非 i 等于 0,否则 j 一直比 i 小1,此时 j 等于 n-1。因此 j = i+1 可能应该改为 j = i,因为 i 将在下一次迭代中增加。

我不懂 Lua,所以不能确定。

2011-11-06 10:25:06
stackoverflow用户732209
stackoverflow用户732209

我不懂 Lua,但是这段 C 代码的作用是:

每次迭代:

将 i 赋值给 j:j = i; 然后将 i 增加 1:i = i+1;

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

2011-11-06 10:26:47
stackoverflow用户282536
stackoverflow用户282536

不建议将它转换成 lua 的 for 循环; 使用 while 循环:

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

不是很清楚这段代码的意义...如果想要转换成基于 1 的索引,也使用 i , j = 1 , ni<=n

2011-11-06 11:11:41
stackoverflow用户4279
stackoverflow用户4279

将一个数组看作是循环缓冲区。i 是当前项,j 总是前一个项:

n = 5
local j = n
for i = 1, n do -- Lua 中数组是从 1 开始的
    -- 数组操作
    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
2011-11-06 11:41:09