C語言基礎
#define DEBUG 0
#ifdef DEBUG
printf("A\n");
#endif
#if DEBUG
printf("B\n");
#endif把上方程式碼寫在 main 函式中執行時的輸出,下列何者正確?
- A只顯示 A
- B什麼都不顯示
- C顯示 A 與 B
查看答案與解析
正確答案:A. 只顯示 A
#ifdef DEBUG 只檢查是否定義了名為 DEBUG 的巨集,不看它的值。DEBUG 被定義為值0,因此條件為真,顯示 A 的敘述會被編譯。#if DEBUG 則檢查值,因為是0而為偽,顯示 B 的敘述會被去除。切換除錯用的處理時,若不統一以 #ifdef 或 #if 判斷,就會發生這種不一致。
- A. 正確。#ifdef 只檢查是否已定義,#if 則檢查值。
- B. 即使值為0,只要已定義,#ifdef 就為真。
- C. #if DEBUG 因 DEBUG 的值為0而為偽,B 的敘述會被去除。