圖片題目為 4 道單選題,答案依次:**B、B、B、C**。
// 題目類似:表達式求值順序
// 選項涉及:逗號運算符、賦值運算符、算術運算符等
答案:B
核心知識點:C語言運算符優先級(從高到低)節選:
結論:**逗號運算符優先級最低**,賦值運算符次之。表達式中逗號最後結合,賦值倒數第二。此題考察對「逗號最低、賦值次低」的記憶。
typeof 關鍵字 (GNU 擴展)
// 題目:typeof(原類型) (標識符) 的作用
答案:B
解析:typeof 是 **GCC/Clang 擴展**(非標準 C),用於獲取表達式或類型的類型,常用於定義類型別名:
typeof(int) a; // 等價 int a;
typeof(1.5) b; // 等價 double b;
typeof(struct Node*) p; // 等價 struct Node* p;
// 進階用法:類型安全的宏
#define MAX(a,b) ({ typeof(a) _a = (a); typeof(b) _b = (b); _a > _b ? _a : _b; })
題目描述「用標識符替代原數據類型聲明變量」正是此意。注意:標準 C 無 typeof,C23 引入 typeof() / `typeof_unqual()` 標準化,但廣泛使用仍依賴編譯器擴展。
// 選項類似:
// A. '\n' B. "\n" C. '\x41' D. 65
答案:B
解析:
'\n':字符常量(類型 int,值 10),**合法**。"\n":字符串字面量(類型 char*,指向含 '\n', '\0' 的數組),**非字符常量**,故為錯誤選項(若題目問「哪個不是字符常量」)。'\x41':十六進制轉義字符(值 0x41 = 65 = 'A'),**合法**。65:整型常量,可隱式轉換為字符,賦值給 char **合法**。若題目問「哪個不能作為字符常量」,答案為 **B (字符串)**。
答案:C
常考點:主函數返回類型、頭文件作用、預處理指令、基本數據類型大小、數組下標從 0 開始等。建議複習《C Primer Plus》前 5 章。
| 考點 | 關鍵區別 | 記憶口訣 |
|---|---|---|
| 逗號 vs 賦值優先級 | 逗號最低,賦值次低 | 「逗號最後,賦值倒二」 |
typeof vs typedef | typeof 取類型(編譯期),typedef 起別名(聲明) | typeof像sizeof,typedef像#define |
字符 'a' vs 字符串 "a" | 前者 int 值,後者 char* 地址 | 單引號一個字,雙引號一串字(含\0) |
轉義 \xNN vs \NNN | 十六進制無長度限(至非十六進制字符),八進制最多3位 | \x變長,八進制固3位 |
scanf/printf 格式符、循環結構、指針操作。本組題目覆蓋運算符優先級、GNU擴展typeof、字符/字符串常量區別三大核心基礎知識點。掌握優先級表、理解 typeof 編譯期類型查詢機制、分清單雙引號本質差異,即可秒殺此類選擇題。建議將優先級表、常用轉義字符、基本類型大小打印貼在顯眼處,反覆內化。