1. 程式人生 > >C語言i++和++i的區別

C語言i++和++i的區別

    i++和++i的區別雖然簡單,還是記錄一下吧!

    【知識點】

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

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

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

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

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

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

     3. 用於判斷條件表示式:如

        a、i++:先執行判斷後加1,如下:

#include<stdio.h>

int main()
{
	int i=0;

	while(i++)

	 { printf("i=%d\n",i);

	   if(i==3)  break;

	 }

	printf("i=%d\n",i);
}

          
     輸出結果為:1

     分析:i++先把i的值0拿出來做判斷條件,此時while(0)條件為假,所有不執行while迴圈體,但是判斷完成後,i執行+1動作(i=i+1),所以i=1,輸出值為1;

        b、++i:先加1後執行判斷,如下:

#include<stdio.h>

int main()
{
	int i=0;

	while(++i)

	 { printf("i=%d\n",i);

	   if(i==3)  break;

	 }

	printf("i=%d\n",i);
}

         

     輸出結果為:i=1,i=2,i=3,i=3

     分析:++i,執行過程先把i的值執行i=i+1,此時i=1再進行判斷,所有while(1)條件為真,然後在執行迴圈體,輸出i=1回車換行,if不成立,繼續迴圈;

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

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

          最後輸出i=3,結束。

     這裡需要注意的是:

     a、break語句表示強制從迴圈體內跳出,提前結束迴圈。

     b、while(1)、while(2)、while(3)都表示條件為真,也就是說非0的數都表示真。

    【小結】

     越是簡單基礎的知識,越需要常常回顧,多多積累!