《C Primer Plus》第五版第五章的一道思考題:
/*測試程序 2015.12.26*/ #include開始我認為輸出結果為 0 1 2 3 4 5 6 7 8 9 10,但是在VC++6.0中驗證之後發現結果為 1 2 3 4 5 6 7 8 9 10。#define TEN 10 int main(void) { int n = 0; while(n++ < TEN) printf("%5d", n); printf("\n"); return 0; }
在《C Primer Plus》第五版第五章(P104)有一段說明:
順序點幫助闡明後綴增量動作何時發生。例如,考慮下面的代碼:
while (guests++ < 10) printf ("%d \n", guests);
有時C的初學者會設想在本程序中“先使用該值,然後增加它的值”的意思是在使用了printf()語句後再增加guests的值。然而,因為guests++<10是while循環的判斷條件,所以它是一個完整的表達式,這個表達式的結束就是一個順序點。因此,C保證副作用(增加guests的值)在程序進入printf()前發生。同時使用後綴形式保證了guests在與10比較後才增加。