lua中數值for迴圈的理解

2021-07-05 08:18:12 字數 710 閱讀 9023

先給乙個「數值」的for例子,通過該例子,理解數值for的執行過程

for i = 1 , 10 , 1 do

print(i)

end

迴圈變數為i,

表示式1:i = 1

表示式2:10  --雖說是乙個數字,但在lua中也是乙個表示式

表示式3:1 --也是乙個表示式

迴圈體:do與end之間的內容,這裡是print(i)

執行過程:

先取表示式1(即i=1),該表示式只被執行一次

再取表示式3的符號,如果表示式3的符號為正,那麼表示式2就作為for迴圈的上界,如果表示式3位負,那麼表示式2就作為for迴圈的下界

再將迴圈變數i的值與表示式2進行比較,比較規則為:

如果表示式3為正,那麼判斷迴圈變數 i 的值是否小於等於表示式2,如果為真,執行迴圈體,然後將迴圈變數 i 加上表示式3,如果為假,for迴圈結束

如果表示式3為負,那麼判斷迴圈變數 i 的值是否大於表示式2,如果為真,執行迴圈體,然後將迴圈變數 i 加上表示式3,如果為假,for迴圈結束

所以,上面for迴圈結束後,i 的值為10

如果將上面的表示式改為如下,那麼該for迴圈會是乙個死迴圈

for i = 10 , 10 , 0 do

print(i)

end

LUA中各種迴圈

1 while迴圈 while true do end2 for的多種迴圈 數值for迴圈 for 起始值,上限,step do for i 1,5,1 do print i end 泛型for迴圈,迭代陣列 迭代陣列中每個鍵值,in後面跟的是迭代器,可以自定義迭代器ipairs pairs都內建的...

Lua中數字for迴圈例項

看以下 複製 如下 for i 1,2 do print i i 3 end 輸出是什麼?如果習慣了c c 語言,會覺得因為改變了控制變數i為3,所以在執行第二次迴圈體之前判斷不通過,所以輸出是1。但結果輸出是1和2,即雖然改變了i,但迴圈還是執行了2次。這是為什麼呢?看了lua的源 發現在語法分析...

Lua中數字for迴圈例項

看以下 複製 如下 for i 1,2 do print 程式設計客棧i i 3 end 程式設計客棧 輸出是什麼?如果習慣了c c 語言,會覺得因為改變了控制變數i為3,所以在執行第二次迴圈體之前判斷不通過,所以輸出是1。但結果輸出是1和2,即雖然改變了i,但迴圈還是執行了2次。這是為什麼呢?看了...