首先了解下優先順序與結合性
1.--為自減運算子,第二優先順序,自右至左
2.x--這個表示式:先使用x的值,接著x=x-1;
整個表示式的值為x
看
while(x--)
{
迴圈體
}
首先
①判斷x--這個表示式的值是否為0(即x的值),如果為0,不執行迴圈體
但仍然執行x=x-1;
例如:
int x=0; 則不執行迴圈體,x最終值為-1
②如果x的初值不為0,判斷x--這個表示式的值是否為0,(不論是否為0)x=x-1,
如果x--表示式的值不為0,在執行迴圈體.(真繞...看例子)
int x=3;
printf("while\n");
printf("%d\n",x);
①3-->不為0-->x=x-1-->x=2
執行迴圈體 while
②2-->不為0-->x=x-1-->x=1
同上
④注意 此時x=0,將不再執行迴圈體,但x=x-1;-->x=-1
(建議你逐步除錯,很清晰)
首先了解下優先順序與結合性
1.--為自減運算子,第二優先順序,自右至左
2.x--這個表示式:先使用x的值,接著x=x-1;
整個表示式的值為x
看
while(x--)
{
迴圈體
}
首先
①判斷x--這個表示式的值是否為0(即x的值),如果為0,不執行迴圈體
但仍然執行x=x-1;
例如:
int x=0; 則不執行迴圈體,x最終值為-1
②如果x的初值不為0,判斷x--這個表示式的值是否為0,(不論是否為0)x=x-1,
如果x--表示式的值不為0,在執行迴圈體.(真繞...看例子)
例如:
int x=3;
while(x--)
{
printf("while\n");
}
printf("%d\n",x);
①3-->不為0-->x=x-1-->x=2
執行迴圈體 while
②2-->不為0-->x=x-1-->x=1
同上
同上
④注意 此時x=0,將不再執行迴圈體,但x=x-1;-->x=-1
(建議你逐步除錯,很清晰)