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

《狂人C》— 善用符號常數提升代碼可讀性與可維護性

     編輯:關於C語言

題目:輸出整數 123 各位數字的 ASCII 碼

符號常數版本

#define ZHENGSHU_3 123
#define GE 1
#define SHI 10
#define BAI 100
#define QIAN 1000

printf("%c 的 ASCII 為 %d", ZHENGSHU_3%QIAN/BAI + '0', ZHENGSHU_3%QIAN/BAI + '0');
printf("%c 的 ASCII 為 %d", ZHENGSHU_3%BAI/SHI + '0', ZHENGSHU_3%BAI/SHI + '0');
printf("%c 的 ASCII 為 %d", ZHENGSHU_3%SHI/GE + '0', ZHENGSHU_3%SHI/GE + '0');

四大理由使用符號常數

  1. 可讀性:BAI 比 100 自述性強,代碼質量關鍵指標。
  2. 減少錯誤:字面常數嵌入代碼易寫錯(123→12)且編譯器不報錯;符號常數拼錯會編譯失敗,更易發現。
  3. 易修改擴充:數據與代碼分離(修改 #define 行即可),耦合度低,符合現代軟體工程原則。
  4. 培養抽象思維:只盯著 123 寫代碼如同只會算術不會代數;抽象能力是程式設計核心素養。

算法統一化:除餘法提取位數

百位可直除 123/100,個位可直取 123%10,但統一用 %QIAN/BAI、%BAI/SHI、%SHI/GE 形式一致,為後續學習迴圈、函數打基礎,代碼更整潔。

變量迭代版本(更通用)

int temp = ZHENGSHU_3;
printf("%c %d", temp%10+'0', temp%10+'0'); temp/=10;
printf("%c %d", temp%10+'0', temp%10+'0'); temp/=10;
printf("%c %d", temp%10+'0', temp%10+'0');

每次只取個位,配合除 10 迭代,易擴展為迴圈處理任意位數。

字符編碼保證

C 標準規定 '0'..'9' 編碼連續,故 數字 + '0' 即得對應字符編碼,跨平台可移植。

不足與改進

GE/SHI/BAI/QIAN 名稱綁定十進位,若推廣至 N 進位,應改為「各位權值」等通用命名。

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