i 迴圈與i 迴圈

2021-08-25 01:28:23 字數 581 閱讀 6800

在網上看到一篇文章,裡面說i++和i--的效率有區別,這個區別我早就知道,其實就是乙個標誌暫存器的重用問題,雖然早就知道還是想寫出來來展示一下計算的魅力,這兩個例子是:

int loop_dec(int n)

int i = 0;

int v = 0;

for(i = n; i > 0; i--)

v +=i;

return v;

int loop_inc(int n)

int i = 0;

int v = 0;

for(i = 0; i

v +=i;

return v;

我們要想得到其中的奧妙只有通過彙編來說明,於是objdump一下上面的兩個函式發現用dec的函式會少乙個cmp語句, 為何呢?其實這個i--效率高並不是--比++有什麼特殊的,而是巧在這是和0比較,眾所周知,cpu的暫存器中有進製和溢位相關的東西,本來是正數,一旦小於0了,可以通過狀態暫存器看出來,而cpu指令中也有根據狀態暫存器跳轉的指令,這樣我們就可以利用這些了,就是這麼簡單,沒有什麼大不了的,不信你把和0比較換成和1比較,i--的優勢就沒有了,要知道,0永遠都是最具魅力的數字

for迴圈中的i 與 i

今天遇到乙個for迴圈 for i 1 i 1 i 其中使用的是 i,我以為 i會先於判斷執行,就上網找了找i 與 i的區別。答案很少,有乙個說的是效率後者高一些。然後我又寫了乙個測試的 var j 0 for i 1 i 1 i,j console.log console.log i,j 發現 是...

js裡面for迴圈的 i與i

首先我們應該都知道 i與i 的區別是 i 是先執行 i i 1 再使用 i 的值,而 i 是先使用 i 的值再執行 i i 1 然後我們也知道for迴圈的執行順序如下 for a b c 進入迴圈執行a 只是進入的時候執行.執行b 條件為真才執行d,不然就跳出for了.執行d 執行c 再回到第2步開...

for迴圈中 i和i 的區別

語法 for 語句1 語句2 語句3 語句 1 在迴圈 塊 開始前執行 語句 2 定義執行迴圈 塊 的條件 語句 3 在迴圈 塊 已被執行之後執行 這就是迴圈中的 i和i 結果一樣的原因,但是效能不一樣,稍後解釋 語句1 同上面語法中的 語句1 語句1 是可選的,也就是說不使用語句1 也可以。var...