Lua嵌套循环代码运行逻辑及输出结果成因求解
Lua 嵌套循环运行逻辑解析
首先复现你给出的代码:
j = 5 for i = 1,5 do for j = 2,5,4 do print(i*j) end end
核心运行规则拆解
- 首先明确Lua数值型for循环的执行逻辑:语法为
for 变量 = 起始值, 终止值, 步长 do 循环体 end,步长不填默认是1。每次循环启动时先给控制变量赋值为起始值,判断是否满足(步长为正时:变量值 <= 终止值;步长为负时:变量值 >= 终止值),满足就执行循环体,执行完后变量加步长再次判断,不满足就退出循环。 - 内层循环
for j = 2,5,4 do的运行次数:步长为4,第一次循环j初始化为2,2 <= 5满足条件,执行一次循环体;执行完后j加步长4变成6,6 > 5不满足条件,直接退出内层循环。也就是说不管外层循环跑多少次,内层循环每次只会执行1次,且执行时j的值固定为2。 - 外层循环
for i = 1,5 do是i从1到5依次取值,步长默认1,所以i会依次取1、2、3、4、5五个值。 - 开头定义的全局变量
j = 5完全不影响运行结果:因为内层for循环的控制变量j会在每次内层循环启动时被重新赋值为2,外层的j会被直接覆盖。
输出结果推导
每次外层循环取一个i值,就执行一次print(i*2):
- i=1时:1*2=2,输出2
- i=2时:2*2=4,输出4
- i=3时:3*2=6,输出6
- i=4时:4*2=8,输出8
- i=5时:5*2=10,输出10
最终输出结果就是2、4、6、8、10,和你观察到的运行结果一致。
内容的提问来源于stack exchange,提问作者tanteo155
相关产品推荐
相关产品推荐

