if (n > 9 && n < -9) // 錯誤:邏輯與應為邏輯或
{
w = 0;
while (n != 0) { n /= 10; w++; }
}
n > 9 && n < -9 永遠為假(無數字同時大於 9 且小於 -9),導致位數 w 始終為 1,遞歸函數無法正確處理多位數。
if (n > 9 || n < -9) // 正確:絕對值大於 9 才需計算位數
{
w = 0;
int temp = n; // 保留原值
while (temp != 0) { temp /= 10; w++; }
}
void int_to_string(int n) {
if (n < 0) { putchar('-'); n = -n; }
if (n / 10) int_to_string(n / 10);
putchar('0' + n % 10);
}
無需額外緩衝區,直接輸出,簡潔高效。