在編寫「猜數字」類程序時,若缺乏輸入範圍檢查,用戶輸入 900 或 -10 等非法值程序仍會照常運行,導致邏輯錯誤。本文通過逐步完善代碼,講解 if-else 條件語句、邏輯運算符、NULL 與 0 的關係,以及如何實現輸入驗證。
int mynum;\
printf("你好,請輸入一個數字:");\
scanf("%d", &mynum);\
printf("\n你輸入的數字是:%d\n", mynum);
運行結果:輸入 900 或 -10 程序均接受,無任何提示。
if (mynum > 500 || mynum < 1) {\
printf("數字僅限於1-500之間,請重新運行本程序!\\n");\
} else {\
printf("\\n你輸入的數字是:%d\\n", mynum);\
}
|| 表示邏輯「或」,&& 表示「且」。900>500 || 900<1 為真,進入錯誤分支。通用形式:
if (條件) {\
// 條件為真執行\
} else {\
// 條件為假執行\
}
可嵌套、可鏈接 else if,構建複雜決策邏輯。
|| (邏輯或):任一真則真,短路求值。&& (邏輯且):全真才真,短路求值。&& 高於 ||,建議加括號明確意圖。在條件判斷中,NULL 與 0 數值相等,但語義不同:
NULL:用於指針/對象,表示「無效地址」。典型用法:if (ptr != NULL)。0:用於整型/數值,表示「零值」。典型用法:if (count == 0)。良好習慣:指針判斷用 NULL,數值判斷用 0,提升代碼可讀性與維護性。
現有程序檢測到錯誤後直接結束,用戶必須重新運行。下一步改進引入循環結構(while/do-while),實現「輸入錯誤 → 提示 → 重新輸入」的交互閉環,將在後續章節講解。
#define MAX_VAL 500 替代魔術數字,便於維護。掌握條件判斷與輸入驗證,是編寫健壯 C 程序的基石。下一篇將介紹循環結構,實現完整的交互式輸入驗證流程。