關閉→
當前位置:知科普>IT科技>++i和i++的使用有何區別

++i和i++的使用有何區別

知科普 人氣:1.02W

簡單的來説,++i 和 i++,在單獨使用時,就是 i=i+1。 而 a = ++i,相當於 i=i+1; a = i; 而 a = i++,相當於 a = i; i=i+1;,++ i 是先知加後賦值;i ++ 是先賦值後加;道下面這是個很好版的例子:權int sum = 0, sum1 = 0;for (int i = 0; i < 5; i++) { sum = i ++;}for (int i = 0; i < 5; i++) { sum1 = ++ i;}System.out.println("sum = " + sum);System.out.println("sum1 = " + sum1);運行結果:sum = 4sum1 = 5,++i是先自加,後運行。i++是先運行,後自加。比如int i=2;a=++i;i=2;b=i++;在運行之後a就等於3 b就等於2,int i=0,k=0, j;j=++i;//j=1,i=1,參與運算前自加1j=k++;//j=0,k=1,參與運算後自加1www.51dongshi.com防採集。

在c語言的學習中,在循環語句中會常常用到++i和i++兩個語法,那麼++i和i++有怎樣的使用區別呢?接下來為大家介紹一下

方法

對於普通獨立的語句,i++和++i是一樣的,如:

++i在用時是i先自增1,再用這時的i值去參與計算;i++是用增1前的i去參與計算,參與計算後i

i++; 等效於i=i+1;

++i在用時是i先自增1,再用這時的i值去參與計算;i++是用增1前的i去參與計算,參與計算後i

++i; 等效於i=i+1;

i++,是先執行代碼,最後再執行i的自增++i,是先執行自增,然後再執行代碼例如:int

++i和i++的使用有何區別

用於賦值語句,i++先賦值後加1,++i先加1後賦值,如:

i++; 在當前使用變量時,i值不變,用完再加1,對於for循環中的那個i++僅表示進行加1這個計算

i=1; y=i++;等效於:i=1; y=i; i=i+1; 則執行完後 y=1; i=2;

怎麼説呢,i = i++就是坑爹的!!理論上講,語言規範上就不應該這麼寫。實際編譯運算結果是 i

i=1; y=++i;等效於:i=1; i=i+1; y=i; 則執行完後 y=2; i=2;

簡單的來説,++i 和 i++,在單獨使用時,就是 i=i+1。 而 a = ++i,相當於 i

++i和i++的使用有何區別 第2張

用於判斷條件表達式時: a、i++:先執行判斷後加1【出結果】為:1【分析】:i++先把i的值0拿出來做判斷條件,此時while(0)條件為假,所有不執行while循環體,但是判斷完成後,i執行+1動作(i=i+1),所以i=1,輸出值為1;

關於自增自減運算,很多書籍沒有把問題講清楚,在C語言裏是這樣的: 1.後置運算:k++表示先

++i和i++的使用有何區別 第3張

b、++i:先加1後執行判斷【輸出結果】為:i=1,i=2,i=3,i=3【分析】:++i,執行過程先把i的值執行i=i+1,此時i=1再進行判斷,所有while(1)條件為真,然後在執行循環體,輸出i=1回車換行,if不成立,繼續循環;

主要差異在於返回值,相同點在於對i進行自加:++i返回的是i自加後的內容,i++返回的是i未自加

當i=1時,再判斷循環條件++i,還是先執行i=i+1,此時i=2; while(2) 條件為真,然後再做循環體,此時輸出 i=2回車換行;if不成立,繼續循環;

i++和i--的區別:1、運算方式i++屬於自增運算,相當於i=i+1;i--屬於自減運算,相

當i=2時,再判斷循環條件++i,還是先執行i=i+1,此時i=3; while(3) 條件為真,然後再做循環體,此時輸出 i=3回車換行;if成立,強制推出循環;

i++和++i命令的區別有:1、賦值順序不同++ i 是先加後賦值;i ++ 是先賦值後加;++

++i和i++的使用有何區別 第4張

關於自增自減運算,很多書籍沒有把問題講清楚百,在C語言裏是這樣的: 1.後置運算:k++表示先運算,後自加。 意思是遇到k++了,我先把當前的k的值拿來參加運算,後面再去管它的自加。 那麼,【“後面”後到什度麼程度呢?要後到當前的語句執行完,即遇到分號;表示 語句執行完了,所以k才自加1。】 如:int k=5,b=0; b=k++;的意思就知是,先算道b=k(即b=5),遇到分號;表示語句結束,k才自加1,即k變為6。2.前置運算:++k表示先自加,後運算 這個意思就是遇到++k了,先把k的值加了1,再往後執行別的。 如:int k=5,b=0; b=++k;的意思就是,先把k自加1,即k為6,再算b=k(即b=6)。掌握好這兩點,k--和--k也是一樣的道理,++i: 先進行自增zd動作,再參與後續處理i++:先參與處理,再進行回自增動作a=++1:這個語句是不對的,常量不能進行++,--操作答如果是a=++i的話:運行步驟如下:i = i + 1;a = i; b=j++;運行步驟如下:b = j;j = j + 1;,++i是在進行運算之前使i自增1,再用增抄後的值進行運算 i++是在進行運襲算之百後才使i增1,使用原值進行運算一次後,再使i自增度1 你運行一下這個再體會問體會就明白了: i=1;j=1;k=1;t=1; m1=i++ + i++; m2=++j + ++j; m3=k++ + ++k; m4=++t + ++t;(注:自增自減速運算只能對變量進行,常量和表達式答不能進行該運算),一個前自增,一個後自增,三心惢 suǒ 疑慮;善 三言譶 tà 説話快 三力劦 xié 古同“協”,合力;同力,主要差異在於返回值,相同點在於對i進行自加:++i返回的是i自加後的來內容,i++返回的是i未自加的內容。舉個例子自:int i = 10;a = i++;vs int i = 10;b = ++i;結果分別是 i = 11, a = 10和 i = 11, b = 11。將i++和++i彙編結果,若沒有使用其返回值賦值特性,結果是一樣的,有返回值差異在於知彙編代碼執行先後(先自加還是先賦值)區別。另外,關於for(i = 0; i < n; i++)與for(i = 0; i < n; ++i) 有差異的説法是扯淡的。現在我們看到的編譯器,基本都會彙編成相道同的代碼(好像有基本經典教程説有差異,那只是針對古老的編譯器)內容來自www.51dongshi.com請勿採集。

TAG標籤:#