簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。 而 a = ++i,相當(dāng)于 i=i+1; a = i; 而 a = i++,相當(dāng)于 a = i; i=i+1;,++ i 是先知加后賦值;i ++ 是先賦值后加;道下面這是個很好版的例子:權(quán)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);運行結(jié)果: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,參與運算后自加1m.gy2thfx.cn防采集。
在c語言的學(xué)習(xí)中,在循環(huán)語句中會常常用到++i和i++兩個語法,那么++i和i++有怎樣的使用區(qū)別呢?接下來為大家介紹一下
方法
對于普通獨立的語句,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++,是先執(zhí)行代碼,最后再執(zhí)行i的自增++i,是先執(zhí)行自增,然后再執(zhí)行代碼例如:int
用于賦值語句,i++先賦值后加1,++i先加1后賦值,如:
i++; 在當(dāng)前使用變量時,i值不變,用完再加1,對于for循環(huán)中的那個i++僅表示進(jìn)行加1這個計算
i=1; y=i++;等效于:i=1; y=i; i=i+1; 則執(zhí)行完后 y=1; i=2;
怎么說呢,i = i++就是坑爹的?。±碚撋现v,語言規(guī)范上就不應(yīng)該這么寫。實際編譯運算結(jié)果是 i
i=1; y=++i;等效于:i=1; i=i+1; y=i; 則執(zhí)行完后 y=2; i=2;
簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。 而 a = ++i,相當(dāng)于 i
用于判斷條件表達(dá)式時: a、i++:先執(zhí)行判斷后加1【出結(jié)果】為:1【分析】:i++先把i的值0拿出來做判斷條件,此時while(0)條件為假,所有不執(zhí)行while循環(huán)體,但是判斷完成后,i執(zhí)行+1動作(i=i+1),所以i=1,輸出值為1;
關(guān)于自增自減運算,很多書籍沒有把問題講清楚,在C語言里是這樣的: 1.后置運算:k++表示先
b、++i:先加1后執(zhí)行判斷【輸出結(jié)果】為:i=1,i=2,i=3,i=3【分析】:++i,執(zhí)行過程先把i的值執(zhí)行i=i+1,此時i=1再進(jìn)行判斷,所有while(1)條件為真,然后在執(zhí)行循環(huán)體,輸出i=1回車換行,if不成立,繼續(xù)循環(huán);
主要差異在于返回值,相同點在于對i進(jìn)行自加:++i返回的是i自加后的內(nèi)容,i++返回的是i未自加
當(dāng)i=1時,再判斷循環(huán)條件++i,還是先執(zhí)行i=i+1,此時i=2; while(2) 條件為真,然后再做循環(huán)體,此時輸出 i=2回車換行;if不成立,繼續(xù)循環(huán);
i++和i--的區(qū)別:1、運算方式i++屬于自增運算,相當(dāng)于i=i+1;i--屬于自減運算,相
當(dāng)i=2時,再判斷循環(huán)條件++i,還是先執(zhí)行i=i+1,此時i=3; while(3) 條件為真,然后再做循環(huán)體,此時輸出 i=3回車換行;if成立,強(qiáng)制推出循環(huán);
i++和++i命令的區(qū)別有:1、賦值順序不同++ i 是先加后賦值;i ++ 是先賦值后加;++
關(guān)于自增自減運算,很多書籍沒有把問題講清楚百,在C語言里是這樣的: 1.后置運算:k++表示先運算,后自加。 意思是遇到k++了,我先把當(dāng)前的k的值拿來參加運算,后面再去管它的自加。 那么,【“后面”后到什度么程度呢?要后到當(dāng)前的語句執(zhí)行完,即遇到分號;表示 語句執(zhí)行完了,所以k才自加1。】 如:int k=5,b=0; b=k++;的意思就知是,先算道b=k(即b=5),遇到分號;表示語句結(jié)束,k才自加1,即k變?yōu)?。2.前置運算:++k表示先自加,后運算 這個意思就是遇到++k了,先把k的值加了1,再往后執(zhí)行別的。 如:int k=5,b=0; b=++k;的意思就是,先把k自加1,即k為6,再算b=k(即b=6)。掌握好這兩點,k--和--k也是一樣的道理,++i: 先進(jìn)行自增zd動作,再參與后續(xù)處理i++:先參與處理,再進(jìn)行回自增動作a=++1:這個語句是不對的,常量不能進(jìn)行++,--操作答如果是a=++i的話:運行步驟如下:i = i + 1;a = i; b=j++;運行步驟如下:b = j;j = j + 1;,++i是在進(jìn)行運算之前使i自增1,再用增抄后的值進(jìn)行運算 i++是在進(jìn)行運襲算之百后才使i增1,使用原值進(jìn)行運算一次后,再使i自增度1 你運行一下這個再體會問體會就明白了: i=1;j=1;k=1;t=1; m1=i++ + i++; m2=++j + ++j; m3=k++ + ++k; m4=++t + ++t;(注:自增自減速運算只能對變量進(jìn)行,常量和表達(dá)式答不能進(jìn)行該運算),一個前自增,一個后自增,三心惢 suǒ 疑慮;善 三言譶 tà 說話快 三力劦 xié 古同“協(xié)”,合力;同力,主要差異在于返回值,相同點在于對i進(jìn)行自加:++i返回的是i自加后的來內(nèi)容,i++返回的是i未自加的內(nèi)容。舉個例子自:int i = 10;a = i++;vs int i = 10;b = ++i;結(jié)果分別是 i = 11, a = 10和 i = 11, b = 11。將i++和++i匯編結(jié)果,若沒有使用其返回值賦值特性,結(jié)果是一樣的,有返回值差異在于知匯編代碼執(zhí)行先后(先自加還是先賦值)區(qū)別。另外,關(guān)于for(i = 0; i < n; i++)與for(i = 0; i < n; ++i) 有差異的說法是扯淡的?,F(xiàn)在我們看到的編譯器,基本都會匯編成相道同的代碼(好像有基本經(jīng)典教程說有差異,那只是針對古老的編譯器)內(nèi)容來自m.gy2thfx.cn請勿采集。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com