常量是程序運行期間不可修改的固定值,又稱字面量。可分為整數、浮點、字符、字符串、枚舉常量。
支持三種進制:
2120 開頭,如 02130x/0X 開頭,如 0x4b後綴:U 無符號,L 長整型,大小寫不敏感,順序任意:30ul、0xFeeL。
非法示例: 078(8 非八進制)、032UU(重複後綴)。
兩種形式:
3.14159(必含小數點或指數)314159E-5L(e/E 引入指數)非法: 510E(指數不完整)、210f(無小數/指數)、.e55(缺整數/小數部分)。
單引號括起:'x'、'\t'、'\u02C0'。常用轉義序列:
| 序列 | 含義 |
|---|---|
| \\ | \ 字符 |
| \' | ' 字符 |
| \" | " 字符 |
| \n | 換行 |
| \t | 水平制表 |
| \r | 回車 |
| \ooo | 1-3 位八進制 |
| \xhh | 十六進制 |
示例:printf("Hello\tWorld\n\n"); 輸出帶制表與換行的文本。
雙引號括起:"hello"。可跨行分割:
"hello, dear" "hello, \ dear" "hello, " "d" "ear"
以上三種形式等價,編譯器自動拼接相鄰字符串字面量。
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main() {
int area = LENGTH * WIDTH;
printf("%d%c", area, NEWLINE); // 輸出 50 和換行
}
const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = '\n';
區別: #define 為文本替換(無類型檢查),const 有類型、有作用域、可調試。**推薦使用 const**,習慣常量名全大寫。