Skip to content

[C 語言] 符號常數(Symbolic Constants)

撰寫符號常數Symbolic Constants)是種提高『原始碼可讀性』的方法。正如經典的攝氏溫度與華氏溫度的轉換,其中邊界值與更新值等的 lower、upper、step 其實都是有意義的數字,尤其是溫度的邊界值

像這樣神奇卻又重要的數值,我們會將其稱之為所謂的 magic number。而在程式中要讓不了解狀況的第三方開發者一眼就能明白這個數值的重要性,我們便可以將其寫成符號常數


符號常數的使用方法

符號常數的設定需要寫在程式的開頭、#include 函式庫等敘述的底下。

#define NAME REPLACEMENT_TEXT

之後,編譯器會在每次解析到 NAME 的名稱時,自動視為 REPLACEMENT_TEXT 的值。你可能會想說:這跟使用『變數』有什麼不一樣嗎?

變數可以重新賦值、符號常數卻不行。

假設今天,我們將 X 設定成 100。

#define X 100

我們便不能再次將 X 設定成其他值:

# Error
X = 200;

這樣是會報錯的,因為在編譯器的理解中,這行程式就跟:

100 = 200;

差不多。

接下來,我們再次將前篇筆記使用 for 迴圈改寫的攝氏溫度與華氏溫度轉換的程式碼加上符號常數改寫。

#include <stdio.h>

#define LOWER 0
#define UPPER 300
#define STEP 20


int main() {
    float F, C;

    // For-loop
    for (F=LOWER; F<=UPPER; F+=STEP) {
        C = (5.0 / 9.0) * (F - 32.0);
        printf("%3.0f %6.1f\n", F, C);
    }

    return 0;
}


Output:

  0  -17.8
 20   -6.7
 40    4.4
 60   15.6
 80   26.7
100   37.8
120   48.9
140   60.0
160   71.1
180   82.2
200   93.3
220  104.4
240  115.6
260  126.7
280  137.8
300  148.9


最後再次解釋符號常數(Symbolic Constants):

  • 目的是提高可讀性
  • 是常數而不是變數,不能賦值

References


Read More

Tags:

Leave a Reply