談到「提高程式原始碼的可讀性」,一共有四個ㄆㄝ步:
雖然 f2c-while.c 實在很短,有經驗的人很容易看出來 30、100、5 的意義, 但是我們還是拿這個程式來示範符號常數 (symbolic constant) 的用法。
#include <stdio.h> #define LOW 30 #define HIGH 100 #define GAP 5 /* 將華氏溫度,從 LOW 到 HIGH,每 GAP 一次, 換算成對應的攝氏溫度 (f2c-sym.c) */ main() { double fahr=LOW; while(fahr <= HIGH) { printf("%3.0f\t%4.1f\n", fahr, 5*(fahr-32)/9); fahr = fahr + GAP; } }
HIGH = LOW + 70;是不可以的。
#define HIGH (LOW+70)卻是可以的。那一對 ( ) 未必需要,只是寫了它們比較保險。 詳細的理由,以後再說。
事實上,符號常數的存在意義,純粹是提高原始碼給人類閱讀的清晰度。 C 才不管它呢。C 直接讀到的是那個符號常數的定義。您可以想像,當我們讀到
HIGH = LOW + 70;的時候,其實 C 讀到的是
100 = 30 + 70;而這個語句,對數學家來說是理所當然的,但是對 C 來說是沒有意義的。
同理,如果您定義
#define HIGH (LOW+70)的時候,則當您寫
while (fahr <= HIGH) {其實 C 讀到的是
while (fahr <= (30+70)) {
習題