while (scanf_s("%ul", &number) == 1); // ← 這裡多了一個分號!
{
// 輸出二進制邏輯
}
while 迴圈,迴圈本體為空語句。while 不斷讀取輸入,直到輸入非數字導致 scanf_s 回傳 0/EOF,迴圈結束。while (scanf_s("%ul", &number) == 1) { // 移除分號
// 輸出二進制邏輯
}
| 錯誤模式 | 現象 | 修正 |
|---|---|---|
if (condition); { ... } | 大括號塊無條件執行 | 移除分號 |
for (i=0; i | 迴圈結束後才執行一次大括號 | 移除分號 |
while (getchar() != '\n'); | 正確:清空緩衝區至換行 | 此處分號為故意用法 |
if/for/while 後直接寫 { 不換行,減少誤加分號機率。一個微小的分號,可能讓整個演算法邏輯失效。養成「寫完迴圈條件即寫左大括號」的肌肉記憶,是避免此類低級錯誤的最佳良方。