常量与字面量
字面量是「直接写在代码里的值」;常量是「程序里不打算改的量」。两者相关但不相同。
1. 概念与例子
C
| 1 | int a = 42; // 42 是整数字面量 |
| 2 | float pi = 3.14f; // 3.14f 浮点字面量 |
| 3 | char sep = '\n'; // 字符字面量 |
| 4 | const int MAX = 100; // const 常量(有名字、有类型) |
| 5 | const char *msg = "hi"; // 字符串字面量地址 |
2. 常见转义字符
| 写法 | 含义 | 例子效果 |
|---|
| \n | 换行 | 打印后换行 |
| \t | 水平制表 | 对齐输出 |
| \\ | 反斜杠 | 打印一个反斜杠 |
| \\' | 单引号 | 字符常量里用 |
| \" | 双引号 | 字符串里嵌引号 |
| \0 | 空字符 | 字符串结束标志 |
3. 为什么 const 优于 #define(入门结论)
C
| 1 | #define MAX 100 // 文本替换,无类型 |
| 2 | const int MAX2 = 100; // 有类型,可调试 |
- const 能参与类型检查与调试器查看
- #define 宏要小心括号,否则容易运算错误
- 一般常量优先 const;宏留给条件编译与真正需要文本替换的场景
4. 动手例子
C
| 1 | const float VREF = 3.3f; |
| 2 | const int ADC_MAX = 4095; // 12bit |
| 3 | float voltage = 1.23f * VREF; // 示意换算思路 |
| 4 | printf("VREF=%.2f ADC_MAX=%d\n", VREF, ADC_MAX); |