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的數都表示真。
【小結】
越是簡單基礎的知識,越需要常常回顧,多多積累!