/*while2.c程序->注意分號的位置*/
1 #include<stdio.h> 2 int main(void) 3 { 4 int n=0; 5 6 while(n++<3); 7 printf("n is %d\n",n); 8 printf("That's all this program does.\n"); 9 10 return 0; 11 }
該程序的輸出如下:
n is 4
That's all this program does.
循環執行完測試條件後面的第一條語句時(簡單或者是複雜語句)后進入下一輪迭代,知道測試條件爲假才會結束。在第六行中while語句後面有一個“;”,循環在此進入下一論迭代,因爲單獨一個分號被視爲一條語句。雖然n的值在每次循環時都遞增1,但第7行的語句不是循環的一部分,所以只會打印一次循環結束後的n值。
在該例中,測試條件後面的單獨分號是空語句(null statement),它什麽也不做。在C語言中,單獨的分號表示空語句。有時,程序員會故意使用帶空語句的while語句,因爲所有的任務都在測試條件中完成了,不需要在循環體中做什麽了。(像while2.c),假如,假設你想要跳過輸入達到第一個既不是空白字符也不是數字的位置,可以這樣寫:while(scanf("%d",&num)==1)
;/*跳過整行輸入*/
只要scanf()讀取一個證書,就會返回1,循環會繼續執行。注意,爲了提高代碼的可讀性,建議吧“;”單獨放在一行,不要直接放在測試表達式同行,一方面是爲了代碼清晰可讀,一方面也是告訴讀者是有意而爲之。