首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C Primer Plus 筆記:為何輸入 q 會導致程式退出?

     編輯:關於C語言

C Primer Plus 筆記:為何輸入 q 會導致程式退出?

在閱讀《C Primer Plus》時,許多初學者會好奇:為什麼在 while 迴圈中輸入字母 q,程式就會結束?這其實與 scanf() 的回傳值機制有關。

while 迴圈的條件判斷

程式碼中常見 while (status == 1),這裡的 status 是 scanf() 的回傳值。在 C 語言中,任何非零值都視為真,因此只要 status == 1 成立,迴圈就會持續執行。

scanf() 的讀取規則

根據《C Primer Plus 第六版》第 94 頁說明,scanf() 配合 %ld 格式時,會嘗試讀取一個長整數。它會跳過空白字元,尋找數字或正負號(+、-)。一旦遇到非數字字元(如 q),scanf() 會立即停止讀取,並將已讀取的字元轉換為數值存入變數。

為何輸入 q 會使 status 歸零?

當使用者輸入 q 時,scanf() 發現第一個字元既非數字也非符號,因此無法匹配 %ld 格式,導致讀取失敗,回傳值為 0。書中第 95 頁詳細解釋:scanf() 成功轉換並賦值的項目數即為回傳值;若輸入不符合格式,回傳 0;若遇到 EOF 則回傳 EOF。

因此,status 變為 0,條件 status == 1 不再成立,while 迴圈隨之終止,程式結束執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved