上面的源代碼為什麼輸入q的時候,程序就會退出呢?
while(條件語句),status == 1是條件語句,status只要是非0值的時候,status == 1的條件就滿足,程序就會運行while循環中的塊。
根據scanf()函數讀取輸入的規則知道,"%ld"是要讀取一個長整型的數據,所以scanf()函數希望發現一個數字字符或者是一個符號(+或-),如果找到一個數字或字符,它便保存該字符,再讀取下一個字符,一直讀取4個字符(我編譯器的ld長整型是4個字節)為止。如果scanf()函數在讀取這四個字符之內碰到了非數字字符或非符號的字符,那麼它會停止讀取。把之前讀取到的字符賦給變量。這個解釋可以查看《C Primer Plus 第六版 中文版》書上詳細介紹了scanf()函數讀取字符的規則,在書94頁的標題1.從scanf()角度看輸入 這一段中。有興趣的可以找電子書讀一下。
為什麼輸入q,status就等於0呢?
因為scanf()函數沒有讀取到數字字符或者符號(+或-),所以返回一個0值。《C Primer Plus 第六版 中文版》書95頁的標題3.scanf()的返回值 這一段有詳細介紹