i 與 i 的執行過程

2021-06-27 03:00:53 字數 675 閱讀 1067

經常遇到一連串的 i++ 或者 ++i 相加,問最後執行的結果和 i 的值

i.g 

int i = -1;

int y = 0;

y = i++ + ++i;

分析一下它的彙編**(沒有經過優化):

subl	$40, %esp              ; 分配40位元組

movl $1, -16(%ebp) ; 儲存 i

movl $0, -12(%ebp) ; 儲存 y

movl -16(%ebp), %eax ; 這3步執行 i++

leal 1(%eax), %edx

movl %edx, -16(%ebp)

addl $1, -16(%ebp) ; 這2步執行 ++i

movl -16(%ebp), %edx

addl %eax, %edx ; 相加操作

movl %edx, -12(%ebp) ; 結果寫回 y

可以看出執行 i++ 需要3步,執行 ++i 需要2步,而且修改 i 值的位置是不一樣的.

這也是為什麼再寫for迴圈的時候,++i 的效率會比 i++ 高. 

i 與 i的區別

public class test static int x,y public static void main string args public static void mymethod 選項 compiletime error prints 1 prints 2 prints 3 print...

i 與 i的區別

今天在寫題的時侯在 i與i 上遇到了麻煩,具體就是我在寫乙個迴圈語句時因為沒有弄清楚i 與 i的區別而導致的錯誤。之前對於i 與 i的使用都只侷限於如下方式 for j 2 j 9 j for j 2 j 9 j 這樣使用好像兩者並沒有什麼區別。然而當我像下面這樣用時卻出了問題 for j i,t ...

自增 i與i 自減 i與i

a 前置自增 變數值先 1,再計算表示式的值 前自增,先增再用 a 後置自增 先計算表示式的值 變數值後 1 後自增,先用再增 a 後置自減 先計算表示式的值 變數值後 1 後自減,先用再減 a 前置自減 變數值先 1,再計算表示式的值 前自減,先減再用 當自增自減遇上邏輯與和邏輯或 因邏輯與一非即...