農會 資訊管理類程式設計105 年第 8 題單選題
關於C語言的前置處理器#define,下列何者敘述正確?
A可以定義常數
B可以定義字串
C可以定義巨集
D以上皆是正確答案
D正確答案
C語言的 #define 是前置處理指令,不僅能定義常數與字串,還能定義帶引數的巨集(Macro)。
為什麼答案是 D
綜合上述,#define 具備定義常數、字串與巨集的功能,故選以上皆是。
考點:定義常數考點:定義字串考點:定義巨集考點:以上皆是
載入中…
完整詳解
Pro · 無限重點 C語言的 #define 是前置處理指令,不僅能定義常數與字串,還能定義帶引數的巨集(Macro)。
看到 #define 就想到「文字替換」,常數、字串、巨集本質上都是文字替換,故選以上皆是。
逐選項分析
A定義常數✕
#define 確實可以定義常數(如 #define PI 3.14),但非唯一功能,故不選單一選項。
B定義字串✕
#define 可以定義字串常數(如 #define MSG "Hello"),敘述正確但不夠完整。
C定義巨集✕
#define 可定義巨集函式(如 #define MAX(a,b)),敘述正確但不夠完整。
D以上皆是✓ 正確
綜合上述,#define 具備定義常數、字串與巨集的功能,故選以上皆是。
#define 前置處理器三大用法
| 用法 | 範例 | 說明 |
|---|
| 定義常數 | #define PI 3.14 | 編譯前將 PI 替換為 3.14 |
| 定義字串 | #define MSG "Hi" | 編譯前將 MSG 替換為字串 "Hi" |
| 定義巨集 | #define ADD(a,b) (a+b) | 帶引數的文字替換,無型別檢查 |
初學者常誤以為 #define 只能用來定義數值常數,而忽略它本質上是「純文字替換」,因此字串和帶有引數的巨集運算也都能勝任,看到選項應選最完整的敘述。