i 和 i的最終解決方式

2021-05-25 02:00:59 字數 708 閱讀 5093

在乙個表示式中,無論i++和++i出現的次數,順序如何,也無論+-*/的混合運算如何,都遵循如下規則:

1.      

所有的i++和++i的值都相等為a。

2.      

a等於執行所有++i後,i的值。

原因是編譯如此工作:

1.找到所有的++i,執行

2然後找到所有的i++,執行

3計算表示式。

int i = 3;

inti,a;

i=3;

a = (++i)+(i++)+(++i)+(i++); 5+5+5+5=20

printf("a=%d /n",a);

i=3;

a = (i++)+(++i)+(i++); 4+4+4=12

printf("a=%d /n",a);

i=3;

a = (++i)*(i++)*(++i); 5*5*5=125

printf("a=%d /n",a);

i=3;

a = (i++)+(++i); 4+4=16

printf("a=%d /n",a);

i=3;

a = (++i)+(i++)*(++i)*(i++)*(i++);5+5*5*5*5=630

printf("a=%d /n",a);

以上程式在vs2008,控制台程式中經過驗證。

i 和i 的用法

式1的運算過程 第一步,第乙個 i計算後i 1,i計算的結果為1 第二步,然後就是i 的計算後i的值不變仍為1,i 的計算結果為1 第三步,接著計算前一步驟中i 自增後的值,此時i 2,再就是第二i 的計算,i的值不變仍是2,所以這一步中i 的計算結果為2 第四步,同上一步計算前一步驟中i 自增後的...

i和i 的區別

大家都應該知道i 和 i的區別,前者是先使用i的值,然後再增加1,而後者是先增加1然後再使用i的值。但是i 和 i那個更好呢?我們實現角度來看 前者是將i值加1後賦給i,然後返回i本身 而後者是先用個臨時變數儲存i值,然後將i值加1賦給i,然後返回臨時變數的值。內建資料型別他們的效率差不多,看他們的...

i 和 i 的輸出

include include include int main int argc,const char argv 輸出結果為 3 3 3 1 0 0 在vs中 printf輸出時,從輸出表示式右到左計算,然後從右到左入棧,再出棧 vs中的彙編下的 5 int main int argc,const...