C - 將整數(shù)轉換為字符序列并顯示
在輸出整數(shù)的過程中,常常遇到各種各樣的問題,例如整數(shù)類型修改后出錯,未使用的高位被 0 填充,以及邊界值(如 -128)顯示異常等。使用 printf 固然可行,但對于需要自定義整數(shù)格式或必須輸出字符序列(如在 TFT-LCD?上顯示)的情況,還是自己寫一個函數(shù)為好。

處理過程比較簡單,利用短路運算控制邊界條件,進而獲得整數(shù)位數(shù),最后逐位顯示出來。代碼如下:
這里顯示的是有符號整數(shù),無符號整數(shù)同理。其中,DIGIT_NUM 為輸入整數(shù)的最大位數(shù),BIT_WIDTH 為整數(shù)位寬,對應 char、short、int?等類型。

當整數(shù)范圍變化時,只需修改上述兩處 #define 即可;如果需要將字符序列輸出到其他設備,可修改兩處 putchar 函數(shù)名。

最初的代碼比較長,于是稍作精簡與各位分享。那么為什么不用 itoa?或者 sprintf 呢?好問題。itoa 不是標準庫函數(shù),要減少使用;sprintf 嘛——忘了。